今天正则表达式对我越来越好。我一直在搜索谷歌查找人们认为有用的代码......而且它不适合我!
背景: 我想验证用户输入到文本字段。输入可以包含: 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!";
}
?>
有什么想法吗?
提前谢谢!!
答案 0 :(得分:2)
正则表达式的问题:/^[\p{Greek}\s\d a-zA-Z]+/u
是告诉您的引擎要开始匹配的内容。话虽这么说,它没有提供任何关于在字符串末尾做什么的说明。将正则表达式更改为:/^[\p{Greek}\s\d a-zA-Z]+$/u
(注意结尾处的$
)应该可以解决问题。
^
和$
组合实质上指示正则表达式引擎在字符串的开头(^
和结尾$
)开始匹配。