【发布时间】:2011-03-14 11:26:49
【问题描述】:
我正在使用这个:if(!preg_match('/^+[0-9]$/', '+1234567'))
我得到了:
警告:preg_match() [function.preg-match]:编译 失败:在偏移量 1 处没有可重复的内容
有什么想法吗?
更新:现在使用这个:if(!preg_match('/^\+[0-9]$/', '+1234567'))
我没有得到匹配。
有什么想法吗?
【问题讨论】:
我正在使用这个:if(!preg_match('/^+[0-9]$/', '+1234567'))
我得到了:
警告:preg_match() [function.preg-match]:编译 失败:在偏移量 1 处没有可重复的内容
有什么想法吗?
更新:现在使用这个:if(!preg_match('/^\+[0-9]$/', '+1234567'))
我没有得到匹配。
有什么想法吗?
【问题讨论】:
+ 是一个特殊字符,表示前一个字符的一个或多个,如果不转义它,您就是将它应用于插入符号。使用\ 对其进行转义,它将匹配文字加号。
if(!preg_match('/^\+[0-9]$/', '+1234567'))
编辑:
不匹配的原因是因为你指定了 0-9 的 1 位数字,字符串的结尾是 $。您需要将其设置为可变数量的数字。
if(!preg_match('/^\+[0-9]+$/', '+1234567')) {
短版:
if(!preg_match('/^\+\d+$/', '+1234567')) {
【讨论】:
^\+[0-9]+$ 或 ^\+[0-9]{7}$ 或类似的。
'/^\+[0-9]$/' 表示行首必须是加号,后跟数字,然后是行尾。
'/^\+[0-9]+$/' 表示行首必须是加号,后跟 一个或多个数字,然后是行尾。
【讨论】: