Home > Mobile >  JS Regex match word starting with character but ignore if it's double
JS Regex match word starting with character but ignore if it's double

Time:05-13

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.

  • Related