Js regexp: RegExp — JavaScript | MDN

JavaScript RegExp Ссылка

❮ Предыдущая Следующая Ссылка ❯


RegExp объект

Регулярное выражение является объектом, который описывает образец символов.

Регулярные выражения используются для выполнения поиска по шаблону и «search-and-replace» функции по тексту.

Синтаксис

/ pattern / modifiers ;

пример

var patt = /w3ii/i

Объяснение примера:

  • / w3ii / я является регулярным выражением.
  • w3ii является шаблоном (to be used in a search) .
  • я модификатор (modifies the search to be case-insensitive) , (modifies the search to be case-insensitive) к (modifies the search to be case-insensitive) .

Для учебника о регулярных выражениях, читайте JavaScript RegExp Учебник .


Модификаторы

Модификаторы используются для выполнения нечувствительны к регистру и глобального поиска:

Модификатор Описание
i Выполните регистронезависимое согласование
g Выполнить глобальный матч (find all matches rather than stopping after the first match) , (find all matches rather than stopping after the first match)
m Выполните многострочный согласование

Кронштейны

Кронштейны используются, чтобы найти диапазон символов:

выражение Описание
[abc] Найти любой символ в скобках
[^abc] Найти любой символ НЕ между кронштейнами
[0-9] Найти любую цифру в скобках
[^0-9] Найти любую цифру НЕ в скобках
(x|y) Найти какой-либо из вариантов, указанных

метасимволов

Метасимволов персонажи с особым смыслом:

Метасимвол Описание
, Найти один символ, кроме символа новой строки или конца строки
\ ш Найти слово характер
\ W Найти несловообразующий характер
\ d Найти цифру
\ D Найти нецифры характер
\ s Найти символ пробела
\ S Найти непробельный характер
\ б Найти матч в начале / конце слова
\ B Найти матч не в начале / конце слова
\ 0 Найти символ NUL
\ п Найдите символ новой строки
\ е Найти символ формы подачи
Найти символ возврата каретки
\ т Найдите символ табуляции
\ v Найти вертикальной табуляции
\ ххх Найти символ, заданный восьмеричное число ххх
\ XDD Найти символ, заданный шестнадцатеричным числом дд
\ ихххх Найти символ Unicode, заданный шестнадцатеричным числом хххх

Кванторы

Квантор Описание
n+ Соответствует любую строку , которая содержит по меньшей мере один п
n* Соответствует любую строку , которая содержит ноль или более вхождений п
n? Соответствует любую строку , которая содержит ноль или один вхождение п
n{X} Соответствует любую строку , которая содержит последовательность X n «ы
n{X,Y} Соответствует любую строку , которая содержит последовательность X к Y n «ы
n{X,} Соответствует любую строку , которая содержит последовательность , по меньшей мере , Х n «ы
n$ Соответствует любой строке с п в конце этого
^n Соответствует любой строке с п в начале этого
?=n Соответствует любой строке , которая сопровождается определенной строки п
?!n Соответствует любую строку, не следует определенной строка п

Свойства объекта RegExp

Имущество Описание
constructor Возвращает функцию, которая создала прототип объекта типа RegExp
global Проверяет , находится ли «g» установлен модификатор
ignoreCase Проверяет , находится ли «i» модификатор установлен
lastIndex Определяет индекс, с которого начинается следующий матч
multiline Проверяет , находится ли «m» установлен модификатор
source Возвращает текст шаблона RegExp

Методы объекта RegExp

метод Описание
compile() Устаревшие версии 1. \d\.EXABCDEF\-\+]/gi) || isNaN(parseFloat(object))) return false; try {if(!isNaN(eval(object))) return true} catch(e) {return false} } }

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

JavaScript RegExp .

Метасимвол

❮ Предыдущий Объект регулярного выражения JavaScript Далее ❯


Пример

Глобальный поиск «h.t»:

let text = «Это горячо!»;
пусть шаблон = /h.t/g;

Попробуйте сами »

Поддержка браузера

/./ — это функция ECMAScript1 (ES1).

ES1 (JavaScript 1997) полностью поддерживается во всех браузерах:

Хром Край Фаерфокс Сафари Опера ИЭ
Да Да Да Да Да Да

Синтаксис

new RegExp(» регулярное выражение .»)

или просто:

/ регулярное выражение . /

Синтаксис с модификаторами

новое регулярное выражение(» регулярное выражение. «, «g»)

или просто:

/ регулярное выражение ./g


Методы поиска регулярных выражений

шаблон как регулярное выражение, это наиболее распространенные методы:

Пример Описание
text.match( шаблон ) Строковый метод match()
Текст.search ( шаблон ) text) Метод RegExp test()

❮ Предыдущий Объект регулярного выражения JavaScript Следующий ❯


ВЫБОР ЦВЕТА



Лучшие учебники
Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
How To Tutorial
SQL Tutorial
Python Tutorial
W3.CSS Tutorial
Bootstrap Tutorial
PHP Tutorial
Java Tutorial
C++ Tutorial
jQuery Tutorial

Top References
HTML Reference
CSS Reference
JavaScript Reference
SQL Reference
Python Reference
W3. CSS Reference
Bootstrap Reference
PHP Reference
HTML Colors
Java Reference
Angular Reference
jQuery Reference

Лучшие примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery

FORUM | О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

JS RegExp, быстрый и медленный.

Движок JavaScript V8 использует Irregexp… | Якоб Грубер | DailyJS

Движок JavaScript V8 использует Irregexp, один из самых быстрых механизмов RegExp. Тем не менее, чтобы наилучшим образом использовать эту мощь, разработчикам JS по-прежнему необходимо избегать определенных ловушек, которые, к сожалению, не являются очевидными и хорошо задокументированными и могут привести к потере драгоценного времени выполнения встроенных функций RegExp до того, как они достигнут сгенерированного кода сопоставления шаблонов Irregexp.

Например, я недавно столкнулся с проблемой в трекере UglifyJS2, в которой разработчик столкнулся с ошибкой корректности в старой версии Chrome. Сам исходный код казался достаточно невинным:

 $ browserify test.js > bundle.js 
$ uglifyjs bundle.js -c reduce_vars=true | node
['fooBar'] // Неправильно!
$ uglifyjs bundle.js -c reduce_vars=false | node
['foo', 'Bar'] // Это то, что мы ожидаем.

Расследование привело к простой ошибке в медленном пути RegExp. prototype[@@split] исправлено несколько месяцев назад — проблема решена.

Или это? Почему мы вообще идем по медленному пути в этом тривиальном примере?

Возможно, вы не знаете об этом, но выбор медленного пути может оказать огромное влияние на производительность. В частности, в случае @@split медленный путь может быть до 40x медленнее, чем быстрый путь.

Встроенные функции RegExp имеют несколько требований, которые необходимо выполнить, чтобы они могли использовать быстрый путь. Рассмотрим regexp[@@split](string) (внутренне вызывается string.split(regexp) ). Чтобы выбрать быстрый путь:

  • регулярное выражение должно быть неизмененным (никаких добавленных, удаленных или измененных свойств)
  • regexp.prototype должно быть неизмененным
  • regexp.lastIndex должно быть простым целым числом, не являющимся отрицательным — не объект, не геттер.

В нашем примере выше RegExp.prototype фактически изменен, когда uglifyjs запускается с reduce_vars=true . Сама модификация выполняется с помощью полифилла Babel es6.regexp.constructor — это плохая новость, поскольку это может означать, что могут быть затронуты более крупные части сети.

Так почему же вообще существует различие между медленными и быстрыми путями?

Ответ: производительность. Чтобы быть эффективным, быстрый путь должен иметь возможность делать определенные предположения о форме объекта RegExp. Например, нужно знать, что 9Доступ к 0017 lastIndex

возможен по определенному смещению в области памяти объекта, и что доступ к lastIndex не имеет побочных эффектов (т. е. без установленных геттеров, без преобразования объекта в целое число) .

Используя эти предположения, быстрый путь может генерировать очень компактный код, превращая lastIndex обращений в простые загрузки/сохранения с определенными смещениями.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.