Руководство для начинающих по регулярному выражению (Regex)
Регулярное выражение - это набор символов, образующих шаблон, который можно искать в строке. Regex может быть использован для Проверка например, для проверки номеров кредитных карт, для поиск т.е. через сложные текстовые совпадения, и для замена сопоставленного текста с другой строкой. Он также имеет отличную поддержку нескольких языков - изучите его один раз, и вы можете использовать его на многих языках программирования.
Я видел, как мало кто впервые взглянул на регулярное выражение и полностью его проигнорировал. Я не виню их; Синтаксис regex сложен и заставит многих работать так же, как те языки командной строки, только хуже. Но тогда каждая новая вещь пугает и кажется поначалу невозможной для изучения. Итак, заимствуя слова Горация, я скажу это; Начни, будь смелым и рискни быть мудрым.
О компании Regex
Regex берет свое начало в нейробиологии и математике и была реализована в программировании только в 1968 году Кеном Томпсоном в текстовом редакторе QED для текстового поиска. Теперь это часть многих языков программирования, таких как Perl, Java, Python, Ruby и JavaScript..
Давайте посмотрим на некоторые примеры того, как работает регулярное выражение.
Я буду использовать JavaScript в моих примерах. Теперь, чтобы пройти начальный уровень, вам нужно выучить все символы, классы, квантификаторы, модификаторы и методы используется в регулярных выражениях. Вот ссылка на страницу регулярных выражений Mozilla Developer Network, где вы можете просмотреть таблицу, содержащую все это. Вы также можете обратиться к шпаргалке в конце этого поста с наиболее часто используемыми символами.
Давайте посмотрим на простой пример с объяснением. Это регулярное выражение.
Это то, что приведенное выше регулярное выражение будет искать в строке: символ «B», за которым следует хотя бы один из любых символов между (включая) «a» до «z», «A» до «Z» и цифр от 0 до 9.
Вот образец совпадений в выделенной строке:
корзины, колба, B12 витамин, BaSO4, N До нашей эры Компания
Приведенное выше регулярное выражение остановит поиск в корзины и вернуть положительный ответ. Это потому что глобальный модификаторг
'должен быть указан если вы хотите, чтобы регулярное выражение просматривало все возможные совпадения.
Теперь давайте посмотрим, как использовать это выражение в JavaScript. тестовое задание
метод идет: если найдено совпадение, возвращаем правда
, еще ложный
.
var input = "ваша тестовая строка", regex = / B [a-zA-Z \ d] + /; предупреждение if (! regex.test (input)) («Совпадение не найдено»); остальное предупреждение («Совпадение найдено»);
Давайте попробуем другой метод: матч
возвращает найденные совпадения в массиве.
var input = "ваша тестовая строка", regex = / B [a-zA-Z \ d] + / g, / * Я добавил глобальный модификатор 'g' к регулярному выражению, чтобы получить все совпадения * / ary = input.match (регулярное выражение); предупреждение if (ary === null) («совпадений не найдено»); остальное предупреждение ('совпадения:' + ary.toString ());
Как насчет строки замещать
? Давайте попробуем это с регулярным выражением сейчас.
var input = "ваша тестовая строка", regex = / B [a-zA-Z \ d] + / g; alert (input.replace (regex, "#"));
Ниже кодекс для вас, чтобы настроить. Нажмите на вкладку «JavaScript» для просмотра кода JS.
упражнения
Для упражнений вы можете гуглить “регулярные выражения” и попробуйте их решить. Вот что ожидать при выполнении этих упражнений в зависимости от уровня сложности.
основной
Для меня возможность подтвердить пароль достаточно для начинающих. Таким образом, подтвердите пароль длиной от 8 до 16 символов, алфавитно-цифровой с вашим выбором разрешенных специальных символов.
промежуточный
Здесь вы должны потренироваться с большим количеством реальных данных и выучить еще несколько регулярных выражений, таких как смотри вперед, смотри за утверждениями а также соответствующие группы;
- Проверка PIN-кодов, шестнадцатеричных чисел, дат, идентификатора электронной почты, плавающей запятой.
- Замените конечный ноль, пробелы, набор подходящих слов
- Извлечение разных частей URL
продвинутый
Вы можете оптимизировать решения вышеупомянутых упражнений - самое оптимальное регулярное выражение для электронной почты содержит тысячи символов - так возьмите это так, как вам удобно, и этого достаточно. Вы также можете попробовать:
- Разбор HTML или XML (хотя в реальном мире это не рекомендуется, потому что использование регулярных выражений для разбора нерегулярного языка, такого как HTML, никогда не сделает его надежным. Плюс разбор XML - сложная задача, более подходящая для опытных пользователей)
- Замена тегов
- Удаление комментариев (кроме условных комментариев IE)
инструменты
Инструменты для визуализировать регулярное выражение это одна из самых крутых вещей для меня. Если вы когда-нибудь сталкивались с длинным сложным регулярным выражением, просто скопируйте и вставьте их в один из этих инструментов, и вы сможете четко видеть поток. Кроме того, есть много инструментов, которые вы можете использовать, чтобы поиграть с кодом регулярного выражения. Они также демонстрируют примеры и читы вместе с общими функциями.
- Debuggex - он рисует диаграмму регулярных выражений в соответствии с вашими данными, и вы можете сразу же сделать быстрый доступ к StackOverflow.
- RegExr - Вы можете проверить свое регулярное выражение с этим. Он также получил ссылку, чит-лист и примеры, чтобы помочь вам.
- Refiddle - на данный момент, кроме JavaScript, вы также можете поиграть с Ruby и .NET-версиями regex..
Regex Cheatsheet
знак | Определение |
[ABC] | Любой отдельный символ a, b или c |
[^ А] | Любой символ, кроме a, b или c |
[A-Z] | Символ между (включая) от А до Я |
[^ А-г] | Символ кроме от а до я |
[A-Z] | Символ между (включая) от А до Я |
. | Любой отдельный персонаж |
\ s | Любой символ пробела |
\ S | Любой непробельный символ |
\ d | Любая цифра от 0 до 9 |
\ D | Любая не цифра |
\ ш | Любой символ слова (буква, цифра и подчеркивание) |
\ W | Любой несловесный символ |
(…) | Захватить все вложенное |
(А | б) | Соответствует либо a, либо b |
? | Персонаж a отсутствует или присутствует один раз |
а * | Символ А отсутствует или присутствует больше раз |
+ | Символ А присутствует один или несколько раз |
а 3 | 3 случая характера подряд |
а 3 | 3 или более вхождения персонажа подряд |
а 3,6 | От 3 до 6 случаев появления персонажа подряд |
^ | Начало строки |
$ | Конец строки |
\ б | Граница слова. Если символ является последним или первым символом слова или Если символ находится между словом или несловесным символом |
\ B | Граница без слов |