Michael Walter
Michael Walter

Reputation: 1477

Replace Numbers with dots

I am trying to replace some ID numbers in my system to clickable number to open the related record. The problem is, that they are sometimes in this format: 123.456.789. When I use my regex, I can replace them and it works fine. The problem accurse when I also have IP addresses where the regex also matches: 123.[123.123.123] (the [] indicates where it matches).

How I can I prevent this behavior?

I tried something like this: /^(?!\.)([0-9]{3}\.[0-9]{3}\.[0-9]{3})(?!\.)/

I am working on "notes" in a ticket system. When the note contains only the ID or an IP, the regexp is working. When it contains more text like:

Affected IDs:
641.298.855 (this, lead)
213.794.868
948.895.285

Then it is not matching anymore on my IDs. Could you help me with this issue and explain what I am doing wrong?

Upvotes: 3

Views: 115

Answers (2)

Avinash Raj
Avinash Raj

Reputation: 174874

You don't need to use negative lookahead at the start and also you don't need to include g modifier, just m modifier would be enough for this case because ^ matches the start of a line and the following pattern will match the string which exists only at the start so it won't do any global match (ie, two or more matches in a single line).

/^([0-9]{3}\.[0-9]{3}\.[0-9]{3})(?!\.)/m

For the sake of performance, you further don't need to use capturing group.

/^[0-9]{3}\.[0-9]{3}\.[0-9]{3}(?!\.)/m

Upvotes: 1

stdob--
stdob--

Reputation: 29167

Add gm modifier:

/^(?!\.)([0-9]{3}\.[0-9]{3}\.[0-9]{3})(?!\.)/gm

https://regex101.com/r/pK1fV4/2

Upvotes: 2

Related Questions