Javascript reg ex для соответствия только целому слову, ограниченному только пробелом - PullRequest
29 голосов
/ 01 июня 2010

так что я знаю, что \ bBlah \ b будет соответствовать целому Blah, однако он также будет соответствовать Blah в "Blah.jpg", я не хочу этого. Я хочу сопоставлять только целые слова с пробелом с обеих сторон.

Ответы [ 5 ]

49 голосов
/ 01 июня 2010

Вы можете попробовать: \sBlah\s.

Или, если вы разрешите начало и конец якоря, (^|\s)Blah(\s|$)

Это будет соответствовать "Blah" отдельно или каждому Blah в "Blah and Blah"

Смотри также


вариант Lookahead

Если вы хотите сопоставить оба Blah в "Blah Blah", то, так как один пробел является «общим» для двух вхождений, вы должны использовать утверждения. Что-то вроде:

(^|\s)Blah(?=\s|$)

Смотри также


Только захват Blah

Приведенное выше регулярное выражение также будет соответствовать начальному пробелу.

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

(?<=^|\s)Blah(?=\s|$)

Но поскольку Javascript не поддерживает его, вместо этого вы можете написать:

(?:^|\s)(Blah)(?=\s|$)

Теперь Blah будет захвачено в \1, без начальных пробелов.

Смотри также

17 голосов
/ 05 августа 2014

Соответствует всем:

\bBlah\b

Regular expression visualization

Демо Debuggex

3 голосов
/ 01 июня 2010

Попробуйте \sBlah\s - это будет соответствовать любой форме пробела с любой стороны.

2 голосов
/ 10 февраля 2017

извлечение всех слов в строке

words_array = str.match(/\b(\w|')+\b/gim)   //only single qout allowed
2 голосов
/ 01 июня 2010

(^|\s)Blah(\s|$) должен работать, однако он также выберет пробелы, если вы просто хотите слово, вы можете сделать это: (^|\s)(Blah)(\s|$) и возьмите группу 2 ($ 2 в рубине).

Если вам нужна помощь с RegEx, оформить заказ: http://www.gskinner.com/RegExr/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...