С и без RegEx

Предположим, вы хотите подтвердить номер телефона в США в строке. Стандартный шаблон - XXX-XXX-XXXX. Вот пример: 098–777–6666. Давайте воспользуемся функцией isUSAPhoneNumber (), чтобы проверить, соответствует ли строка этому шаблону, возвращая либо «true», либо «false».

Когда функция возвращает false? Мы проведем несколько проверок, чтобы убедиться, что строка является действительным номером телефона в США.

  • Длина строки не равна 12.
  • Первые три символа (называемые кодом зоны) состоят только из цифр.
  • Телефонный номер должен иметь первый дефис после кода города.
  • Вторые три символа - цифры, затем еще один дефис.
  • Последние четыре символа - это дополнительные числа.

Если какая-либо из вышеперечисленных проверок завершилась неудачно, функция возвращает «false», в противном случае возвращает «true».

Без регулярных выражений

Создайте новый файл (с именем isUSAPhoneNumber.js) и введите следующий код.

С регулярными выражениями

Вышеупомянутый поиск телефонного номера работает, но для выполнения каких-либо ограничений требуется много кода. Функция isUSAPhoneNumber (текст) не сможет проверить другой формат, например 123.123.4242 или (123) 123–4242.

Давайте воспользуемся регулярным выражением (для краткости называемым регулярными выражениями), чтобы решить эту проблему. Регулярное выражение / ^[0-9]{3}-[0-9]{3}-[0-9]{4}$ / используется для соответствия тому же текстовому шаблону, что и предыдущая функция isUSAPhoneNumber (text).

Но как проверить весь следующий формат: (123) 123–4242, (123) 123–4242, 123–123–4242 и 123.123.4242. Мы меняем наше регулярное выражение на /^((\([0–9 sizes{3}\))| ] {3} [\ s \ - \.]? [0–9] {4} $ /.

Изучите мета-персонажи egrep

Большинство персонажей совпадают сами с собой. Единственные исключения называются специальными символами, такими как *, +,?, \,., ^, [], $, & И |.

Начало и конец строки

ˆ (каретка) и $ (доллар), которые представляют начало и конец строки текста при проверке соответственно.

  • Если курсор (^) стоит в начале всего регулярного выражения, он соответствует началу строки.
  • Если знак доллара ($) стоит в конце всего регулярного выражения, он соответствует концу строки.
  • Если все регулярное выражение заключено в курсор и знак доллара (^abc$), оно соответствует всей строке.

Соответствие любому из нескольких символов

Строка символов, заключенная в квадратные скобки ([]), соответствует любому символу в этой строке. Но если вы используете [ˆ] вместо [], класс будет соответствовать любому символу, которого нет в списке.

  • Например, [abc] соответствует a, b или c, но не x, y или z.
  • Однако [^abc] соответствует x, y или z, но не a, b или c.

Соответствие любому персонажу

Если вы хотите подтвердить номер телефона, например 123 123 4242, 123–123–4242 или даже 123.123.4242, вы можете использовать символы «s», «-» или «.» Между каждым номером, например [0 –9] {3} [\ - \. \ S]? [0–9] {3} [\ - \. \ S]? [0–9 ] {4}.

  • Чтобы соответствовать специальному символу, поставьте перед ним обратную косую черту, например \.
  • Используйте (?), чтобы соответствовать нулю или одному вхождению односимвольного регулярного выражения).
  • {N} точно соответствует n предыдущей группе.

Теперь, когда вы знаете основные шаги по поиску шаблонов текста с помощью регулярных выражений.

Спасибо за прочтение!