preg_match: nothing to repeat / no match

前端 未结 2 1278
悲&欢浪女
悲&欢浪女 2021-01-17 20:28

I am using this: if(!preg_match(\'/^+[0-9]$/\', \'+1234567\'))

and am getting:

Warning: preg_match() [function.preg-match]:

相关标签:
2条回答
  • 2021-01-17 20:47

    + is a special character that indicates 1 or more of the previous character, and by not escaping it you are applying it to the caret. escape it with \ and it will match a literal plus sign.

    if(!preg_match('/^\+[0-9]$/', '+1234567'))
    

    EDIT:

    The reason why it didn't match is because you specified 1 digit from 0-9 and the end of the string with $. You need to make it a variable amount of digits.

    if(!preg_match('/^\+[0-9]+$/', '+1234567')) {
    

    Shorter version:

    if(!preg_match('/^\+\d+$/', '+1234567')) {
    
    0 讨论(0)
  • 2021-01-17 20:53

    '/^\+[0-9]$/' means that begining of the line has to be plus sign folowed by a number then end of line.

    '/^\+[0-9]+$/' means that begining of the line has to be plus sign folowed by a one or more numbers then end of line.

    0 讨论(0)
提交回复
热议问题