Php 预匹配:仅数字字母和逗号

Php 预匹配:仅数字字母和逗号,php,regex,preg-match,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_nam

如何编写只匹配数字字母和逗号的正则表达式

我在下面列出了这个,但它不起作用-它也接受其他标点符号

# 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."/>';
  }
#仅检查数字字母和逗号是否匹配
如果(!preg_匹配('/([a-zA-Z0-9]|[a-zA-Z0-9\,])/',$cst_值))
{
$error=true;
回声';
}
非常感谢,, 刘

您想要:

/^[a-zA-Z0-9,]+$/
您需要字符串锚定的开始
^
和结束
$
。如果没有它们,正则表达式引擎将在字符串中查找这些字符中的任何一个,如果找到一个,它将在一天内调用它并说有匹配项。通过锚定,它强制引擎查看整个字符串。基本上:

  • /[a-zA-Z0-9,]+/
    如果任何字符是字母数字+逗号,则匹配
  • 如果所有字符都是字母数字+逗号,则匹配
我们将以下内容传递给preg_match:
/^[0-9a-z,]+$/i

说明:

  • /
    :正则表达式分隔符
  • ^
    :开始锚定
  • […]
    :字符类
  • 0-9
    :任意数字
  • a-z
    :任何字母表
  • :逗号。逗号不是正则表达式 metachar,所以你不需要逃避它
  • +
    :一个或多个的量词。如果 空输入被认为是有效的, 将
    +
    更改为
    *
  • $
    :端锚
  • i
    :制作匹配的案例 麻木不仁

这又增加了几个字符,比如下划线

/^[\w,]*$/
但这应该行得通

/^[a-zA-Z0-9,]*$/

\w
不包含空格。嗯,我认为\w也包含空格,但看了之后没有。感谢大家每天学习使用preg_replace(“/[^a-zA-Z0-9]/”,“,$string”);仅剥离数字和字符的步骤:谢谢你的想法。我只想在逗号后面有一些字母数字字符时匹配逗号(和前面的字母数字字符),否则就留下逗号和前面的所有字符。我如何做到这一点?
/^[a-zA-Z0-9,]*$/