Reputation: 33
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?
Upvotes: 2
Views: 168
Reputation: 163217
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 1See a regex101 demo.
If a lookbehind is not supported:
(?:^|\s)£(\w+)
See another regex101 demo.
Upvotes: 0
Reputation: 626738
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.Upvotes: 1