Подтвердить что ты не робот

Javascript reg ex для соответствия только целым словам, связанным только пробелами

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

4b9b3361

Ответ 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 без начального пробела.

См. также

Ответ 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