Otto Otto - 3 months ago 14
HTML Question

JS RegEx to match certain patterns only

I need to adapt my Javascript RegEx to match certain patterns only. The RegEx is used in the html5

pattern
attribute to validate an input field.

I want to accept alphanumeric pattern of the following types only:

A-AAAA or BB-BBB (the intended pattern is: 1 digit before the "-", and 4 digits after the "-", or 2 digits before the "-", and 3 digits after the "-").

My current RegEx is:

/([\w]{1,2})(-([\w]{3,4}))/g


This one works, but accepts CC-CCCC as well, which is obviously a valid input pattern, but not the intended pattern. It accepts DDD-DDDD as well; valid again, but not intended.

Could you please assist adapting the pattern?

Answer

You can use alternation:

/\b(?:\w-\w{4}|\w{2}-\w{3})\b/

RegEx Demo