randomJSEngine
randomJSEngine

Reputation: 33

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

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

Answers (2)

The fourth bird
The fourth bird

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 1

See a regex101 demo.


If a lookbehind is not supported:

(?:^|\s)£(\w+)

See another regex101 demo.

Upvotes: 0

Wiktor Stribiżew
Wiktor Stribiżew

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

Related Questions