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".