Проверка соответствия строки регулярному выражению в JavaScript

Как стать разработчиком JavaScript Программирование и разработка

В этом кратком руководстве по сопоставлению регулярных выражений JavaScript вы узнаете, как с помощью test()метода проверить, соответствует ли строка регулярному выражению.

Строки — это фрагменты текста, которые могут содержать различные данные, такие как URL-адреса, номера телефонов, имена, номера и многое другое. Во многих случаях вам нужно проверить, содержит ли строка фрагмент текста или определенные типы символов.

Когда вы проверяете, содержит ли строка определенную подстроку, вы можете использовать такой метод, как indexOf(). Однако для более гибкого тестирования и условий лучше использовать регулярные выражения.

Сопоставление регулярных выражений JavaScript позволяет проверить, содержит ли строка определенный шаблон, подстроку или типы символов. Регулярные выражения полезны для обнаружения информации в строке, которая может быть записана в различных форматах, например даты.

Проверка строк на соответствие регулярным выражениям

Чтобы проверить, соответствует ли строка регулярному выражению, необходимо сначала создать экземпляр регулярного выражения. Затем вы можете использовать test()метод, доступный для регулярного выражения, чтобы проверить, соответствует ли строка регулярному выражению или нет.

Метод test()принимает один параметр: строку для проверки на соответствие шаблону. Он возвращает логическое значение, указывающее, соответствует ли строка регулярному выражению или нет.

Например:

const pattern = /test.*regular/;
const str = 'I want to test this string against a regular expression';
if (pattern.test(str)) {
  console.log('Matched');
} else {
  console.log('Not Matched');
}

В этом примере вы создаете шаблон test.*regular. Этот шаблон означает, что строка должна содержать слова testи regularв указанном порядке, и что эти слова могут быть разделены нулем или более вхождений любого символа.

Если test()возвращает true, Matchedрегистрируется в консоли. В противном случае Not Matchedвходит в консоль.

Поскольку strсодержит слова testи regularи testпредшествует regularв строке, он будет соответствовать шаблону и test()вернет значение true.

Вы также можете использовать конструктор RegExp для объявления шаблонов:

const pattern = new RegExp('test.*regular');
const str = 'I want to test this string against a regular expression';
if (pattern.test(str)) {
  console.log('Matched');
} else {
  console.log('Not Matched');
}

Вы можете проверить это в следующей демонстрации CodePen.

const input = document.querySelector('#str');
const checkBtn = document.querySelector('#check');
const resultElm = document.querySelector('#result');
const pattern = /hello/;

checkBtn.addEventListener('click', function () {
  if (pattern.test(input.value)) {
    resultElm.textContent = 'Yes';
  } else {
    resultElm.textContent = 'No';
  }
});

Общие примеры

В этом разделе показано несколько примеров использования сопоставления регулярных выражений JavaScript для тестирования распространенных вариантов использования. Следует отметить, что регулярные выражения здесь могут быть не идеальным решением в каждом случае. Каждый из них используется, чтобы дать простой пример того, как работает процесс.

Читайте также:  Различные способы инициализации unordered map в C++

URL-адреса для тестирования

Вы можете проверить, является ли строка URL-адресом, используя регулярные выражения. Вы можете поэкспериментировать с этим, используя следующую демонстрацию CodePen.

const input = document.querySelector('#str');
const checkBtn = document.querySelector('#check');
const resultElm = document.querySelector('#result');
const pattern = /^(https?):\/\/[^\s$.?#].[^\s]*$/;

checkBtn.addEventListener('click', function () {
  if (pattern.test(input.value)) {
    resultElm.textContent = 'Yes';
  } else {
    resultElm.textContent = 'No';
  }
});

Обратите внимание, что использованный выше шаблон регулярного выражения предполагает, что URL-адрес должен начинаться с http://или https://.

Тестирование электронных писем

Вы можете проверить, является ли строка допустимым адресом электронной почты, используя регулярные выражения. Следующая демонстрация CodePen показывает, как это сделать.

const input = document.querySelector('#str');
const checkBtn = document.querySelector('#check');
const resultElm = document.querySelector('#result');
const pattern = /^[a-zA-Z0–9+_.-]+@[a-zA-Z0–9.-]+$/;

checkBtn.addEventListener('click', function () {
  if (pattern.test(input.value)) {
    resultElm.textContent = 'Yes';
  } else {
    resultElm.textContent = 'No';
  }
});

Даты тестирования

Вы можете проверить, является ли строка датой, используя регулярные выражения. Следующая демонстрация CodePen показывает, как это можно сделать.

const input = document.querySelector('#str');
const checkBtn = document.querySelector('#check');
const resultElm = document.querySelector('#result');
const pattern = /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/;

checkBtn.addEventListener('click', function () {
  if (pattern.test(input.value)) {
    resultElm.textContent = 'Yes';
  } else {
    resultElm.textContent = 'No';
  }
});

Обратите внимание, что использованный выше шаблон регулярного выражения предполагает, что дата будет иметь формат «ДД-ММ-ГГГГ» или «ДД/ММ/ГГГГ».

Другие методы сопоставления регулярных выражений JavaScript

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

  • match. Этот метод доступен для строк. Он принимает регулярное выражение в качестве параметра и извлекает части строки, соответствующие регулярному выражению, если таковые имеются.
  • search. Этот метод доступен для строк. Он принимает регулярное выражение в качестве параметра, ищет, существует ли шаблон регулярного выражения в строке, и извлекает индекс первого вхождения шаблона в строку, если он существует.
  • exec. Этот метод доступен для регулярных выражений. Он принимает строку в качестве параметра, ищет шаблон регулярного выражения в строке и извлекает результаты, если они есть.
Читайте также:  Как создать волновое изображение в HTML?

Заключение

Регулярные выражения очень полезны для проверки того, содержит ли строка определенный шаблон или подстроку. С помощью сопоставления регулярных выражений JavaScript вы можете проверить, является ли строка URL-адресом, датой, IP-адресом или другими типами и форматами.

По сравнению с использованием других методов, таких как indexOf(), test()метод, доступный для регулярных выражений, обеспечивает большую гибкость при проверке соответствия строки шаблону или нет.

Оцените статью
bestprogrammer.ru
Добавить комментарий