preg_match:没有重复/不匹配

时间:2010-07-11 12:38:55

标签: php regex

我使用的是:if(!preg_match('/^+[0-9]$/', '+1234567'))

我正在接受:

  

警告:preg_match()   [function.preg-match]:编译   失败:没有什么可以在偏移1重复

任何想法为什么?


更新:现在使用此:if(!preg_match('/^\+[0-9]$/', '+1234567'))

并且我没有匹配。

任何想法为什么?

2 个答案:

答案 0 :(得分:21)

+是一个特殊字符,表示前一个字符中的一个或多个,并且通过不转义它,您将它应用于插入符号。使用\对其进行转义,它将与文字加号相符。

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

修改

它不匹配的原因是因为您从0-9指定了1位数字,而使用$指定了字符串的结尾。你需要使它成为可变数量的数字。

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

更短的版本:

if(!preg_match('/^\+\d+$/', '+1234567')) {

答案 1 :(得分:3)

'/^\+[0-9]$/'表示该行的开头必须是加号,后面加一个数字,然后是行尾。

'/^\+[0-9]+$/'表示该行的开头必须是加号,后面加一个一个或多个数字,然后是行尾。