Брат, я недавно выучил JavaScript и увидел, что знания были немного грязными, когда я изучал регулярное выражение, поэтому я написал блог, чтобы подвести итог его.
определение
Есть два способа определить reg exp в JavaScript:
1) Использовать новый Exp: var exp1 = new Exp ("ABC");
2) Поместите шаблон непосредственно между двумя //: var exp2 = /abc /; //Примечание. Полем Нет двойных кавычек, если вы добавите его, это становится строкой
Специальные персонажи
Визуально, особые персонажи такие же, как и у Perl. Полем Просто используйте его напрямую
/D цифровые символы
/w буквенно -цифровые символы ("символы слов")
/S пробелы символов (Space, Tab, Newline и аналогичный)
/D символы, которые не являются цифрами
/W не альфаномерные символы
/S не бегливые символы
Полем Период соответствует всем персонажам, кроме новостей
Есть очень простой способ запомнить:
d = цифра, так что это число
W = слово, так что это буквы
S = пространство, так что это пространство
Все капитализации обратны. Полем
скобки []
Поместите шаблон в скобки означает, что до тех пор, пока любой персонаж соответствует, это правда. (Это то же самое, что и Java или Perl)
например
Кода -копия выглядит следующим образом:
console.log (/[01]/. test ("023424")); // истинный
console.log (/[01]/. test ("13424")); // истинный
console.log (/[01]/. test ("23424")); // ЛОЖЬ
скобки ()
Это означает, что все в скобках должно быть правдой
например
Кода -копия выглядит следующим образом:
console.log (/[01]/. test ("013424")); // истинный
console.log (/[01]/. test ("13424")); // ЛОЖЬ
console.log (/[01]/. Тест ("230424")); // ЛОЖЬ
console.log (/[01]/. Тест ("230142401")); // истинный
Квантификаторы
Это то же самое, что и Java. Полем Этот стол очень хороший. Полем Мне всегда нравилось его использовать
| Жадный | Вынужденный | Притяжательный | Значение |
|---|---|---|---|
| X? | Х | X?+ | X, один раз или нет вообще |
| X* | X*? | X*+ | X, ноль или более раз |
| X+ | X+? | X ++ | X, один или несколько раз |
| X {n} | X {n}? | X {n}+ | X, ровно n раз |
| X {n,} | X {n,}? | X {n,}+ | X, по крайней мере n раз |
| X {n, m} | X {n, m}? | X {n, m}+ | X, по крайней мере N , но не более чем м раз |
Функции объекта выражения
1) Тест очень прост. Просто поместите строку для тестирования в тестировании (...), и эта функция вернет true/false, что представляет собой совпадение/не Unmatch
2) EXEC, эта функция возвращает NULL, если строка соответствия не найдена. Если это найдено, будет возвращен массив. Это содержит строки совпадений по порядку.
3) String.Replace (Expressing1, String1) Эта функция заменяет часть соответствия в выражении с помощью String1. В String1 вы можете использовать группу в скобках в предыдущем выражении
, чтобы заменить часть этого. Например, «co-ol» .replace (/[/w] +/- [/w]+/, «$ 2-1 $ 1»); // можно использовать "ol-co" до 9 долларов
4) string.replace (выражение, функция) Это улучшенная версия и очень мощная. Вы можете определить любой вывод, который вы хотите, через функцию. Конкретное использование здесь не указано, пожалуйста, см.
Нажмите, чтобы открыть ссылку
Динамически генерировать экспрессию reg
Этот метод может быть применен, когда вы хотите использовать что -то в рег.
Чтобы сгенерировать reg exp, вам нужно только использовать строку для создания внешнего вида REG Exp, а затем использовать конструктор Exp. (упоминается в начале статьи)
Например:
Кода -копия выглядит следующим образом:
var name = "дорогой"
«О, моя дорогая». Пересазначна (новое экспресс (имя), «Бог»); // боже мой
Однако, если в имени есть особые символы, он может использоваться в регулярном выражении, и приведенный выше метод часто допускает ошибку.
Таким образом, в этом случае мы можем префиксу каждый символ входной строки с помощью обратной черты, такой как:
Кода -копия выглядит следующим образом:
var name = df [] vxv;
var expname = name.replace ("/[^/w/s]/g", "// $ &");
«Меня зовут df [] vxv» .replace (New Exp (имя), «Боб»); // меня зовут Боб