Регулярное выражение
Регулярное выражение (иногда сокращенно «регулярное выражение») — это шаблон, используемый для сопоставления комбинаций символов в строке.
Например, , можно использовать регулярное выражение для поиска всех текстовых строк в абзаце, содержащих слово «красный», и отображения тех строк, в которых найдено совпадение.
Вы также можете заменить слово «красный» с «зеленым». Иногда регулярные выражения используются для проверки адреса электронной почты, пароля, имени и т. Д. В поле HTML-формы, чтобы получить допустимый формат. В JavaScript регулярные выражения также являются объектами.
Создание регулярного выражения
Существует два способа создания регулярного выражения.
Используя инициализатор объекта, как показано ниже:
var colorName =/Green/;
Приведенный выше код создает новый объект RegExp с именем colorName и присваивает узору зеленый цвет. В приведенных выше обозначениях символ прямой косой черты (/) используется для обозначения начала и конца шаблона.
Использование функции-конструктора, как показано ниже:
re = new RegExp («Green»)
JavaScript: шаблоны регулярных выражений
Иногда требуется различное сопоставление шаблонов вместо прямого соответствие. Например, шаблон/xy * z/соответствует любому символу.
Например,/bo */соответствует ‘boo’ в «Книге» и ‘b’ в «Прекрасной реке», но ничего в «Постоянном предприятии».
Содержание:
- Регулярное выражение Примеры (31)
- Полный список и описание специальных символов соответствия шаблону
Использование метода тестирования:
let TextStr = "Быстрая коричневая лиса перепрыгивает через ленивую собаку."; let MatchRegex =/quick/; let rexp = MatchRegex.test (TextStr) ; console.log (rexp); //trueMatchRegex =/Quick/; rexp = MatchRegex.test (TextStr); console.log (rexp); //false
Соответствие буквенным строкам:
let TextStr = "Быстрый коричневый лиса перепрыгивает через ленивую собаку. "; let MatchRegex =/quick/; let rexp = MatchRegex.test (TextStr); console.log (rexp); //true
Сопоставление литеральной строки с различными возможностями:
let TextStr = «Корова - домашнее животное.»; Let DomRegexp =/Cow | cat | rose | dog/; let rexp = DomRegexp.test (TextStr); console.log (rexp); //true
Игнорировать регистр при сопоставлении:
let TextStr = "JavaScriptTutorial" ; let IgCaseRegexp =/JavaScriptTutorial/i; let rexp = IgCaseRegexp.test (TextStr); console.log (rexp); //true
Извлечь совпадения:
let TextStr = "Извлечь 'zip 'из этого файла. "; let codingRegexp =/zip/; let rexp = TextStr.match (codingRegexp); console. журнал (rexp); //["zip"]
Найти больше, чем первое совпадение:
let TextStr = "Быстрая коричневая лиса перепрыгивает через ленивую собаку"; let MoreRegexp =/the/gi; let rexp = TextStr.match (MoreRegexp); console.log (rexp); //["The", "the"]
Соответствует чему угодно с периодом подстановки:
let TextStr = "Последние фазы войны!"; let WildRegexp =/.ar/;let rexp = WildRegexp.test (TextStr); console.log (rexp); //true
Соответствие одного символа нескольким возможностям:
let TestStr = " Быстрая коричневая лисица перепрыгивает через ленивую собаку. "; Let vowelRegexp =/[aeiou]/gi; пусть rexp = TestStr.match (vowelRegexp); console.log (rexp); //[«e», «u», «i», «o», «o», «u», «o», «e», «e», «a», «o»]
Сопоставьте буквы алфавита:
let TestStr = "Упакуйте мою коробку пятью дюжинами спиртных напитков кувшины. "; пусть алфавитRegexp =/[az]/gi; пусть rexp = TestStr.match (алфавитRegexp); console.log (rexp); //[«P», «a», «c», «k», «m», «y», «b», «o», «x», «w», «i», «t» , «h», «f», «i», «v», «e», «d», «o», «z», «e», «n», «l», «i», « q "," u "," o "," r "," j "," u "," g "," s "]
Соответствие Цифры и буквы алфавита:
let TestStr = "Python 3.8.0, документация выпущена 14 октября 2019 г."; let my_Regexp =/[d- №0-9]/ги; пусть rexp = TestStr.match (my_Regexp); console.log (rexp); //[«h», «n», «3», «8», «0», «d», «m», «e», «n», «i», «n», «e» , «l», «e», «e», «d», «n», «1», «4», «e», «2», «0», «1», «9»]
Соответствие одиночным символам не указано:
let TestStr = "4 книги были включены таблица. "; let my_Regexp =/[^ aeiou ^ 0-9]/gi; пусть rexp = TestStr.match (my_Regexp); console.log (rexp); //["T", "h", "", "", "b", "k", "s", "", "w", "s", "", "n", "", "t", "h", "", "t", "b", "l", "."]
Соответствие символам, которые встречаются или другое время:
let TestStr = "Hippopotamus"; let my_Regexp =/p +/g; let rexp = TestStr.match (my_Regexp); консоль. журнал (rexp); //["pp", "p"]
Сопоставление символов, которые встречаются ноль или более раз:
let TestStr = "Huuuuuuuuuuuuuuuuurrah!"; let my_Regexp =/Hu */; пусть rexp = TestStr.match (my_Regexp); console.log (rexp); //["Хууууууууууууууу"]
Поиск символов с ленивым сопоставлением:
let textStr = " Очень быстрый ветер "; let my_Regexp =/?/; пусть rexp = textStr.match (my_Regexp); console.log (rexp); //[""]
Соответствие шаблонам начальной строки:
let TestStr = "Упакуйте мою коробку пятью дюжинами кувшинов с ликером."; let my_Regexp =/^ Pack/; пусть rexp = my_Regexp.test (TestStr); console.log (rexp); //true
Соответствие шаблонам конечной строки:
let TestStr = "Pack my ящик с пятью дюжинами кувшинов со спиртным "; let my_Regexp =/jugs $/; пусть rexp = my_Regexp.test (TestStr); console.log (rexp); //true
Соответствие шаблонам конечной строки:
let TestStr = "Pack my ящик с пятью дюжинами кувшинов со спиртным "; let my_Regexp =/jugs $/; пусть rexp = my_Regexp.test (TestStr); console.log (rexp); //true
Соответствовать всем буквам и цифрам:
let TestStr = "Pack мой ящик с пятью дюжинами кувшинов со спиртным "; let my_Regexp =/ b/gi; пусть rexp = TestStr.match (my_Regexp) .length; console.log (rexp); //16
Сопоставить все, кроме букв и цифр:
let TestStr = " Упакуйте мою коробку пятью дюжинами кувшинов со спиртным "; let my_Regexp =/ W/g; пусть rexp = TestStr.match (my_Regexp) .length; console.log (rexp); //7
Ограничить возможные имена пользователей:
let TestStr = "TheQuickbrownFox"; let userRexp =/^ [az] ([0-9] [0-9] + | [az] + d *) $/i; let rexp = userRexp.test (TestStr); console.log (rexp); //true
Match Whitespace:
let TestStr = "Упаковать мою коробку пять дюжин кувшинов со спиртным "; let countWSRexp =/ s/g; let rexp = TestStr.match (countWSRexp); console.log (rexp)//["", "", "", "", "", "", ""]
Соответствие непробельным символам:
let TestStr = "Упаковать мою коробку пятью дюжинами кувшинов со спиртным"; let countNWSRexp =/ S/г; let rexp = TestStr.match (countNWSRexp); консоль. log (rexp)//[«P», «a», «c», «k», «m», «y», «b», «o», «x», «w», «i» , «t», «h», «f», «i», «v», «e», «d», «o», «z», «e», «n», «l», « i "," q "," u "," o "," r "," j "," u "," g "," s "]
Укажите верхнее и нижнее количество совпадений:
let TestStr = "Ok bye"; let my_Regex =/Ok {1,5} sbye/ ; let rexp = my_Regex.test (TestStr) console.log (rexp)//true
Укажите только меньшее количество совпадений:
let TestStr = "Hauuurah"; let my_Regex =/Hau {3,} rah/; let rexp = my_Regex.test (TestStr); console.log (rexp)//true
Укажите точное количество совпадений:
let TestStr = "Huuuuuurah"; пусть my_Regexp =/Hu {6} rah/; let rexp = my_Regexp.test (TestStr); console.log (rexp)//true
Проверить все или ничего:
let TestStr = "Beautiful"; let my_Regexp =/Beauti? ful/; let rexp = my_Regexp.test (TestStr); console.log (rexp)//true
Положительный и отрицательный прогноз:
let TestStr = "Skyrider"; let my_Regexp =/^ (? = w {6,}) (? = D * d {2})/; let rexp = my_Regexp .test (TestStr); console.log (rexp)//false
Проверить смешанную группировку символов:
let TestStr = "JavaScript Tutorial"; let myRegexp =/(PHP|JavaScript).*Tutorial/;let rexp = myRegexp.test (TestStr); console.log (rexp)//true
Повторное использование шаблонов с использованием групп захвата:
let TestStr = "15 15 15"; let my_Regex =/^ ( d +) s 1 s 1 $/; let rexp = my_Regex.test (TestStr); console.log (rexp)//true
Используйте группы захвата для поиска и замены:
let TextStr = "Это красный цветок."; let Org_Regexp =/red/ ; пусть replace_Regexp = "желтый"; let rexp = TextStr.replace (Org_Regexp, replace_Regexp); console.log (rexp)//«Это желтый цветок.»
Удалите пробелы из начального и Конец:
let TestStr = "JavaScript, Tutorial!"; Let my_Regexp =/^ s + | s + $/g; пусть rexp = TestStr.replace (my_Regexp, ""); console.log (rexp)//«JavaScript, Учебник!»
В следующей таблице представлен полный список и описание специальных символов сопоставления с образцом, которые можно использовать в регулярных выражениях.
Символ | Значение |
---|---|
Указывает, что следующий символ является особенным и не должен интерпретироваться буквально Например,/d/соответствует символу ‘d’. Помещая обратную косую черту перед d, то есть используя/ d/, символ становится специальным, означающим, что он соответствует любому символу, который является цифрой. -или- Указывает, что следующий символ не является особенным и должен интерпретироваться буквально. |
|
^ | Соответствует началу строки или строки. Например,/^ A/не соответствует ‘A’ в «О статьях», но соответствует ему в «Жизни» |
$ | Соответствует концу строки или строки. Например,/e $/не соответствует ‘t’ в «точном», но соответствует ему в «w3resource» |
* | Соответствует предыдущему символу 0 или более раз. Например,/bo */соответствует ‘boo’ в «Загрузочном USB-накопителе» и ‘b’ в «Красивом уме», но ничего в «Постоянно действующем предприятии». |
+ | Соответствует предыдущему символу 1 или более раз. Например,/a +/соответствует «a» в «Daniel» и всем a в «Daaam» |
? | Соответствует предыдущему символу 0 или 1 раз. Например,/r? eu?/соответствует ‘re’ в «w3resource» и ‘eu’ в «европе». |
. | Десятичная точка соответствует любому одиночному символу, кроме новой строки. Например,/. n/соответствует ‘an’ и ‘on’ в словах «апельсин на столе». |
(x) | Соответствует ‘x’ и запоминает соответствующий символ. Например,/(go)/соответствует и запоминает ‘go’ в «go there» |
x | y | Соответствует «x» или «y». Например,/green | red/соответствует ‘green’ в «зеленом цвете» и синему в «синем цвете». |
{n } | Соответствует ровно n (положительному целому) вхождению предыдущего символа. Например,/a {2}/не соответствует «a» в «dam», но соответствует всем a в «daam» и первым двум a в «daaam» |
{n,} | Соответствует как минимум n (положительному целому) вхождению предыдущего символа. Для Например,/a {2,}/не соответствует «a» в «dam», но соответствует всем a в «daam» и первым двум a в «daaam» |
{n, m} | Соответствует как минимум n и как максимум m (n и m положительные целые числа) вхождений предыдущего символа. Например,/a {1,3}/ничего не соответствует в «dom», «a» в «dam», первым двум a в «daam» и первым трем a в «daaaaaam». Обратите внимание, что при сопоставлении «daaaaaam» совпадение будет «aaa», так как максимальное значение m равно 3, хотя в исходной строке было больше букв a.. |
[xyz] | Соответствует любому из набора символов, используя дефис, вы можете указать диапазон символов. Например. [uvwxyz] то же самое, что [u-z]. Совпадение «y» в «желтом» и «u» в «синем». |
[^ xyz] | Соответствует любому символу, который не заключен в скобки, используя дефис, вы можете указать диапазон символов. Например, [^ wxyz] то же самое, что [^ wz]. Изначально они соответствуют букве «b» в «синем» и «s» в «указать». |
[ b] | Соответствует пробелу. |
b | Соответствует границе слова (позиции между символом слова и символом, не являющимся словом), например пробел. Например,/ bn w/соответствует ‘on’ в «раньше» |
B | Соответствует позиции, которая находится за пределами символа слова и границы символа, отличного от слова. Например,/ w Bn/соответствует ‘on’ в слове «раньше». |
cX | Соответствует управляющему символу (X) в строке. Например,/ cM/соответствует control-M в строке. |
d | Соответствует любому символу, который является цифра. Эквивалентно [0-9]. Например,/ d/или/[0-9]/соответствует ‘2’ в «E2 означает второй пример». |
D | Соответствует любому символу, не являющемуся цифрой. Эквивалентно [^ 0-9]. Например,/ D/или/[^ 0-9]/соответствует ‘C’ в «E2 означает второй пример». |
f | Соответствует каналу формы |
n | Соответствует новой строке |
r | Соответствует возврату каретки. |
s | Соответствует любому символу пробела (включая табуляцию, новую строку, возврат каретки, подачу формы, вертикальную табуляцию). [ t n r f v]. Например,/ s w */соответствует слову «яблоко» в слове «Яблоко». |
S | Соответствует любому символу, отличному от пробела. Эквивалентно [^ f n r t v]. Например,/ S/ w * соответствует ‘An’ в «яблоке» |
t | Соответствует табуляции |
v | Соответствует вертикальной табуляции. |
w | Соответствует любому символу слова (буквенно-цифровому), включая подчеркивание. Эквивалентно [A-Za-z0-9_]. Например,/ w/соответствует ‘g’ в «зеленом», «8» в «12,86» и «3» в «3G». |
W | Соответствует любому символу, не являющемуся словом, эквивалент [^ A-Za-z0-9 _]. Например,/ W/или /[^ $ A-Za-z0-9 _]/соответствует ‘$’ в «150 $» |
n | Где n — целое положительное число. Обратная ссылка на последнюю подстроку, совпадающую с n скобками в регулярном выражении Например,/red (,) sgreen 1/соответствует ‘red, green’ в «красный, зеленый, белый, черный». « |
ooctal | Восьмеричное escape-значение позволяет встраивать коды ASCII в регулярные выражения. |
xhex | Шестнадцатеричное escape-значение позволяет встраивать коды ASCII в регулярные выражения. |