Как разбить по границе слова или по числу? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть фильтр слов, который ищет слова с помощью этого регулярного выражения:

/\b[a-zA-Z-]+\b/

Поиск слова: «привет».

  • Случай 1: «Привет!» = true
  • Случай 2: «Hello0 there» = false
  • Случай 3: «Hello_there» = false
  • Случай 4: «Hello-there» = false
  • Случай 5: «4Hello there» = false

Как я могу настроить границы слов, чтобы также находить слова, которые начинаются / заканчиваются цифрой, подчеркиванием, дефисом или любым другим символом, кроме письмо?

1 Ответ

1 голос
/ 08 мая 2020

Вы можете использовать

/(?<![^\W\d])[a-zA-Z]+(?![^\W\d])/

Отрицательный поиск назад (?<![^\W\d]) соответствует местоположению, которому непосредственно не предшествует символ, отличный от неслова и символа di git, т. Е. Должен быть либо начало строки, либо слово char, но di git.

Отрицательный просмотр вперед (?![^\W\d]) соответствует местоположению, за которым сразу не следует символ, кроме неслова и di git char, т.е. должен быть либо конец строки, либо слово char, отличное от di git.

...