Home > other >  Regex: ONly Allow Upper case AND specific numbers
Regex: ONly Allow Upper case AND specific numbers

Time:03-16

I'm trying to create regex and test in javascript.

RULE: The text should only be 8 characters. Only contain Upper case and numbers 1-5 No lower case or special characters or 6-7 numbers.

example:

12345678 -- false
a2345678 -- false
aabbccdd -- false
AABB33DD -- true // contains BOTH uppercase and 
                    numbers between 1-5 and nothing else
AABB88DD -- false 
AABBCCDD -- false
AABB3.DD -- false 

CODE:

 var pattern = new RegExp("^(?=.*[1-5])(?=.*[A-Z]). $");
 pattern.test(code)

I'm not able to crate the right regex. Can anyone please help?

CodePudding user response:

Use

^(?=.*[1-5])(?=.*[A-Z])[A-Z1-5]{8}$

See regex proof.

EXPLANATION

--------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
  (?=                      look ahead to see if there is:
--------------------------------------------------------------------------------
    .*                       any character except \n (0 or more times
                             (matching the most amount possible))
--------------------------------------------------------------------------------
    [1-5]                    any character of: '1' to '5'
--------------------------------------------------------------------------------
  )                        end of look-ahead
--------------------------------------------------------------------------------
  (?=                      look ahead to see if there is:
--------------------------------------------------------------------------------
    .*                       any character except \n (0 or more times
                             (matching the most amount possible))
--------------------------------------------------------------------------------
    [A-Z]                    any character of: 'A' to 'Z'
--------------------------------------------------------------------------------
  )                        end of look-ahead
--------------------------------------------------------------------------------
  [A-Z1-5]{8}              any character of: 'A' to 'Z', '1' to '5'
                           (8 times)
--------------------------------------------------------------------------------
  $                        before an optional \n, and the end of the
                           string
  • Related