Javascript reg ex to match whole word only, bound only by whitespace
Matching all:
\bBlah\b
Debuggex Demo
You can try: \sBlah\s
.
Or if you allow beginning and end anchors, (^|\s)Blah(\s|$)
This will match "Blah"
by itself, or each Blah
in "Blah and Blah"
See also
- regular-expressions.info/Character classes and Anchors
\s
stands for "whitespace character".- The caret
^
matches the position before the first character in the string - Similarly,
$
matches right after the last character in the string
Lookahead variant
If you want to match both Blah
in "Blah Blah"
, then since the one space is "shared" between the two occurrences, you must use assertions. Something like:
(^|\s)Blah(?=\s|$)
See also
- regular-expressions.info/Lookarounds
Capturing only Blah
The above regex would also match the leading whitespace.
If you want only Blah
, ideally, lookbehind would've been nice:
(?<=^|\s)Blah(?=\s|$)
But since Javascript doesn't support it, you can instead write:
(?:^|\s)(Blah)(?=\s|$)
Now Blah
would be captured in \1
, with no leading whitespace.
See also
- regular-expressions.info/Grouping and flavor comparison
extracting all words in a string
words_array = str.match(/\b(\w|')+\b/gim) //only single qout allowed
Try \sBlah\s
— that will match any form of whitespace on either side.