1

I am using this regex .*\?(a\=([0-9]{3,4})) to match any URLs with the query string ?a={{a random number here}}. It should only match a query string with 3 or 4 digits

E.g.

http://www.test.com/test/test-test-test/?a=12
http://www.test.com/test-test/news/?a=734
http://www.test.com/test/?a=0987
http://www.test.com/test/test-test-test/?a=90235

My regex should match the second and third links as they contain a query string 3 or 4 digits.

I am using this tool http://www.regexpal.com/ and so far, it only highlights the second link.

Alexis P
  • 529
  • 4
  • 9
  • 16

2 Answers2

2

Try this regex:

.+\/\?a=([0-9]{3,4})$
  • /.+\/\?a=([0-9]{3,4})$/gm
  • .+ matches any character (except newline)
  • Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy]
  • \/ matches the character / literally
  • \? matches the character ? literally
  • a= matches the characters a= literally (case sensitive)
  • 1st Capturing group ([0-9]{3,4})
  • [0-9]{3,4} match a single character present in the list below Quantifier: {3,4} Between 3 and 4 times, as many times as possible, giving back as needed [greedy]
  • 0-9 a single character in the range between 0 and 9
  • $ assert position at end of a line

See it working here: https://regex101.com/r/sP0lR3/1

And as a visual representation:

Regular expression visualization

Debuggex Demo

Jorge Campos
  • 22,647
  • 7
  • 56
  • 87
1
a=\d{3,4}$

Regex101 Demo and Explanation

Pedro Lobito
  • 94,083
  • 31
  • 258
  • 268