2014-03-07 34 views
1

正则表达式在今天越来越好了。我一直在寻找谷歌寻找代码,人们说的作品......它不适合我!希腊字符的正则表达式测试php

背景: 我想验证用户输入到文本字段。输入可以包含: 1)。英文字符和数字 或 2)。希腊字符和数字 如果符号(&%!)等被发现,它不应该匹配!

目前: 一直在PHP

测试这个表达式
/^[\p{Greek}\s\d a-zA-Z]+/u 

与 “γφψη677” 测试工作 测试与 “γφψη677 ###你好” 的作品太! - 但我想这失败

<?php 
header("content-type: text/html;charset=utf-8"); 

if (preg_match_all('/^[\p{Greek}\s\d a-zA-Z]+/u', 'γφψη 677###hello')){ 
    echo "ok!"; 
} 
else { 
    echo "no!"; 
} 
?> 

任何想法?

预先感谢您!

+0

类似的问题https://stackoverflow.com/questions/6255329/php-and-regexp-to-accept-only-greek-characters-in-form – Suragch

回答

1

你的正则表达式的问题:/^[\p{Greek}\s\d a-zA-Z]+/u是它告诉你的引擎开始匹配什么。这就是说,它没有提供任何关于在字符串末尾做什么的指示。将您的正则表达式更改为:/^[\p{Greek}\s\d a-zA-Z]+$/u(注意末尾的$)应该可以解决此问题。

^$组合基本上指示正则表达式引擎开始在字符串的开头(^,并在年底$)匹配。

+0

好东西!谢谢 – user3209603