Skip to content
Advertisement

PHP is not applying Regex to check void string

I made a regex Debuggex Demo which allows:

  • NP123
  • FS-123
  • FS-123-456
  • or void

works well on Debuggex, but and I don’t understand why PHP accept strings like “TEST” which is not part of the accepted templates

Check the fiddler: https://www.phpliveregex.com/p/teA

Advertisement

Answer

You may use

^(?:FS-[0-9a-zA-Z]+(?:-[0-9a-zA-Z]+)?|NP[0-9a-zA-Z]+)?$

See the regex demo

Details

  • ^ – start of string
  • (?: – start of an outer non-capturing group for the anchors to be applied to all the alternatives inside
    • FS-[0-9a-zA-Z]+(?:-[0-9a-zA-Z]+)?FS- and 1+ alphanumeric chars and then an optional sequence of - and 1+ alphanumeric chars
    • | – or
    • NP[0-9a-zA-Z]+NP and 1+ alphanumeric chars
  • )? – end of the group
  • $ – end of string.
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement