So I have this regular exp :: /(?:^|\W)\£(\w )(?!\w)/g
This is meant to match words following the character £
. ie; if you type Something £here
it will match £here
.
However, if you type ££here
I don't want it to be matched, however, i'm unsure how to match £
starting but ignore if it's ££
.
Is there guidance on how to achieve this?
CodePudding user response:
You can add £
to \W
:
/(?:^|[^\w£])£(\w )/g
Actually, (?!\w)
is redundant here (as after a word char, there is no more word chars) and you can remove it safely.
See the regex demo. Details:
(?:^|[^\w£])
- start of string or any single char other than a word and a£
char£
- a literal char(\w )
- Group 1: one or more word chars.
CodePudding user response:
If you also don't want to match $£here
(?<!\S)£(\w )
Explanation
(?<!\S)
Assert a whitespace boundary to the left£
Match literally(\w )
Capture 1 word characters in group 1
See a regex101 demo.
If a lookbehind is not supported:
(?:^|\s)£(\w )
See another regex101 demo.