lau*_*kok 8 php regex preg-match
如何编写仅与数字字母和逗号匹配的正则表达式?
我在下面发布了这个,但它不起作用 - 它也接受其他标点符号!
# check for matches number-alphabets and commas only
if(!preg_match('/([a-zA-Z0-9]|[a-zA-Z0-9\,])/', $cst_value))
{
$error = true;
echo '<error elementid="usr_username" message="'.$cst_name.' - please use number-alphabets and commas only."/>';
}
Run Code Online (Sandbox Code Playgroud)
非常感谢,刘
Nul*_*ion 19
你要:
/^[a-zA-Z0-9,]+$/
Run Code Online (Sandbox Code Playgroud)
您需要字符串锚点的开头^和结尾$.如果没有它们,正则表达式引擎会在字符串中查找这些字符中的任何字符,如果找到它,它会在一天之内调用它并说它是匹配的.使用锚点,它会强制引擎查看整个字符串.基本上:
/[a-zA-Z0-9,]+/匹配,如果任何字符是字母数字+逗号./^[a-zA-Z0-9,]+$/如果所有字符都是字母数字+逗号,则匹配.if(preg_match('/^[0-9a-z,]+$/i', $cst_value)) {
// valid input..contains only alphabet,number and comma.
}else{
// invalid
}
Run Code Online (Sandbox Code Playgroud)
我们将以下内容传递给preg_match: /^[0-9a-z,]+$/i
说明:
/ :正则表达式分隔符.^ :开始锚[..] :Char课程0-9 :任何数字a-z :任何字母表,:一个逗号.逗号不是正则表达式,所以你无需逃避它+:一个或多个的量词.如果空输入被视为有效,请更改+为*$ :结束锚i :使匹配大小写不敏感.