2011-10-21 81 views
1

选择字符串我有以下的正则表达式它匹配以下正则表达式

/^\+[0-9]{1,3}\s[0-9]{1,6}\s[0-9\s]{5,8}$/u 

在我的PHP代码。我无法理解哪个字符串会被这个表达式匹配。

我尝试以下

+7 777 777777 

和不匹配......你能帮助我理解 - 什么字符将匹配这个正则表达式?

+1

这对我的作品。 –

回答

3

它确实匹配。您的代码中可能存在错误?这是正确的做法:

$s = '+7 777 777777'; 
$pattern = '/^\+[0-9]{1,3}\s[0-9]{1,6}\s[0-9\s]{5,8}$/u'; 
echo preg_match($pattern, $s); 

结果:

1 

看到它联机工作:ideone

+0

是的,你是对的!谢谢!我试图在这里(http://www.regextester.com/)和这里(http://regexpal.com/)测试它,并且它说“没有匹配”。据我现在了解,这种服务只适用于^ \ + [0-9] {1,3} \ s [0-9] {1,6} \ s [0-9] {5,8} $变体正则表达式。 – dizpers

+0

我以为同样的事情,但当我去codepad.org发布一个例子,我得到了一个错误,说'警告:preg_match():内部pcre_fullinfo()错误-3在第4行上“(http:/ /codepad.org/tBMeMoVW)(我不得不删除u修饰符,因为他们的php不是用utf8支持编译的,但是用这个简单的例子它应该没关系)。也许如果error_reporting被设置为显示警告,将会看到类似的错误。 –