Обычное И или НЕ

JavaScript регулярное выражение
Обычное И или НЕ

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

Когда дело доходит до поиска, легко подумать о поисковых системах, таких какGoogle.

GoogleЕсть несколько простых методов поиска, которые сами по себе очень полезны.

Например, реализовать набор функций операции: и, или, не.

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

1. Ключевые слова

hello

если тыgoogleискать вhello, что случается?

Будут найдены все веб-страницы, содержащие слово привет.

В нижней части рисунка выше мы используемТестовая коробкаКаждая строка текста внутри представляет веб-страницу. на каждой из страницhelloвыделено.

Мы можем думать, что логика суждения такова:

/hello/i.test(page)

Чтобы визуально подчеркнуть, что найдена правильная «страница», мы позволяем любой, содержащейhelloстрока, выделяется вся строка. На этом этапе вам нужно изменить регулярное выражение:

/^.*hello.*$/im.test(page)

Вышеупомянутое регулярное выражение означает, что позволяютhelloЕсть другие персонажи до и после. Эффект следующий:

Чтобы определить, есть ли целевой символ в строке, вы можете использовать утверждение:(?=p).

/^(?=.*hello).*$/im.test(page)

«Утверждать» — это утверждение, которое «может судить, верно оно или нет».

(?=p)Указывает, что символ, следующий за текущей позицией, удовлетворяет регулярному выражениюp, который соответствует позиции, а не любому символу. как^Такой же.

2. с

hello world

Googleпоискhello worldилиhello+world. Он представляет собой целевую страницу для поиска, включаяhelloиworldэти два слова.

Используйте регулярку, чтобы определить, выполняются ли несколько условий одновременно. Лучший способ - использовать(?=p).

/^(?=.*hello)(?=.*world).*$/im.test(page)

3. или

hello OR world

если вGoogleполе поискаhello OR worldУказывает, что целевая страницаhelloилиworldслово. Присутствие обоих не обязательно.

обычный|Изначально разработан для обработки логики «или»:

/^.*(hello|world).*$/im.test(page)

используется в(?=p)На самом деле, также возможно:

/^(?=.*(hello|world)).*$/im.test(page)

4. Не

hello-world

поискhello-worldУказывает, что целевая страница должна содержатьhello, но не включаяworld.

обычный(?!p)да(?=p)противоположно . То есть оценивается, что символ после текущей позиции не удовлетворяет регулярному выражениюp.

/^(?=.*hello)(?!.*world).*$/im.test(page)

5. Последовательность

Если я хочу, чтобы целевая страница отображалась первойhello, который появляется послеworldчто делать?

/^.*hello(?=.*world).*$/im.test(page)

Обратите внимание, что строка 7 на изображении ниже не выделена.

это мой первый месяц4Статья, объясняющая использование обычных утверждений ((?=p), (?!p), (?

Эта статья закончилась.

добро пожаловать на чтение"Обычная мини-книга JS".