preg_match:仅限数字字母和逗号

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,]+$/如果所有字符都是字母数字+逗号,则匹配.


cod*_*ict 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 :使匹配大小写不敏感.