如何编写仅与数字字母和逗号匹配的正则表达式?
我在下面发布了这个,但它不起作用 - 它也接受其他标点符号!
# 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."/>';
}
非常感谢, 刘
答案 0 :(得分:19)
你想:
/^[a-zA-Z0-9,]+$/
您需要字符串锚点的起始^
和结束$
。如果没有它们,正则表达式引擎会在字符串中查找这些字符中的任何字符,如果找到它,它会在一天之内调用它并说它是匹配的。使用锚点,它会强制引擎查看整个字符串。基本上是:
/[a-zA-Z0-9,]+/
匹配,如果任何字符是字母数字+逗号。/^[a-zA-Z0-9,]+$/
匹配。答案 1 :(得分:9)
if(preg_match('/^[0-9a-z,]+$/i', $cst_value)) {
// valid input..contains only alphabet,number and comma.
}else{
// invalid
}
我们将以下内容传递给preg_match:/^[0-9a-z,]+$/i
说明:
/
:正则表达式分隔符。^
:启动锚[..]
:Char class 0-9
:任何数字a-z
:任何字母,
:逗号。逗号不是正则表达式
metachar,所以你无需逃避它+
:一个或多个的量词。如果
空输入被认为有效,
将+
更改为*
$
:结束锚i
:制作匹配案例
不敏感的。答案 2 :(得分:1)
嗯,这会增加几个字符,如下划线
/^[\w,]*$
/
但这应该有用
/^[a-zA-Z0-9,]*$/