так что я знаю, что \bBlah\b будет соответствовать целому Блаху, однако он также будет соответствовать Бла в "Blah.jpg". Я не хочу этого. Я хочу совместить только целые слова с пространством с обеих сторон.
Javascript reg ex для соответствия только целым словам, связанным только пробелами
Ответ 1
Вы можете попробовать: \sBlah\s
.
Или, если вы разрешаете начало и конец якоря, (^|\s)Blah(\s|$)
Это будет соответствовать "Blah"
самостоятельно или каждый Blah
в "Blah and Blah"
См. также
- regular-expressions.info/Character classes и Anchors
-
\s
означает символ пробела. - Каретка
^
соответствует позиции перед первым символом в строке - Аналогично,
$
соответствует сразу после последнего символа в строке
-
Вариант Lookahead
Если вы хотите сопоставить оба Blah
в "Blah Blah"
, то, поскольку одно пространство "разделяется" между двумя вхождениями, вы должны использовать утверждения. Что-то вроде:
(^|\s)Blah(?=\s|$)
См. также
Только захват Blah
Вышеупомянутое регулярное выражение также будет соответствовать ведущему пробелу.
Если вы хотите только Blah
, в идеале, lookbehind было бы хорошо:
(?<=^|\s)Blah(?=\s|$)
Но поскольку Javascript не поддерживает его, вы можете вместо этого написать:
(?:^|\s)(Blah)(?=\s|$)
Теперь Blah
будет записано в \1
без начального пробела.
См. также
Ответ 2
Соответствие всем:
(?:^|\b)(Blah)(?=\b|$)
Ответ 3
Попробуйте \sBlah\s
- это будет соответствовать любой форме пробелов с обеих сторон.
Ответ 4
(^|\s)Blah(\s|$)
должен работать, однако он также будет выбирать пробелы, если вы просто хотите, чтобы это слово можно было сделать:
(^|\s)(Blah)(\s|$)
и возьмите группу 2 ($ 2 в рубине).
Если вам нужна помощь с RegEx, checkout: http://www.gskinner.com/RegExr/
Ответ 5
извлечение всех слов в строке
words_array = str.match(/\b(\w|')+\b/gim) //only single qout allowed