so I know \bBlah\b will match a whole Blah, however it will also match Blah in "Blah.jpg" I don't want it to. I want to match only whole words with a space on either side.
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"
\s stands for "whitespace character".^ matches the position before the first character in the string$ matches right after the last character in the stringIf 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|$) 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.
Matching all:
\bBlah\b 
Debuggex Demo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With