用希腊字符php进行正则表达式测试

时间:2014-03-07 10:49:52

标签: php regex character

今天正则表达式对我越来越好。我一直在搜索谷歌查找人们认为有用的代码......而且它不适合我!

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

目前: 用PHP测试这个RegEx

/^[\p{Greek}\s\d a-zA-Z]+/u

用“γφψη677”进行测试 使用“γφψη677### hello”进行测试也有效!! - 但我想要失败

<?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!";
}
?>

有什么想法吗?

提前谢谢!!

1 个答案:

答案 0 :(得分:2)

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

^$组合实质上指示正则表达式引擎在字符串的开头(^和结尾$)开始匹配。