我使用的是:if(!preg_match('/^+[0-9]$/', '+1234567'))
我正在接受:
警告:preg_match() [function.preg-match]:编译 失败:没有什么可以在偏移1重复
任何想法为什么?
更新:现在使用此:if(!preg_match('/^\+[0-9]$/', '+1234567'))
并且我没有匹配。
任何想法为什么?
答案 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]+$/'
表示该行的开头必须是加号,后面加一个一个或多个数字,然后是行尾。