如果字符串包含带特殊字符的字母数字值,则preg_match中用于验证字符串的正确语法是什么

时间:2012-12-20 18:32:46

标签: php regex preg-match

我用过这个...我在某个网站上看到了这个...但它对我没有帮助。

if(preg_match("/^[A-Za-z0-9-_\",'\s]+$/",$newPass)) {
    //is valid..
}

1 个答案:

答案 0 :(得分:1)

如果要测试字符串是否包含至少一个字母数字字符串和至少一个非字母数字字符串,请使用以下正则表达式:

/^(?=.*[a-z0-9])(?=.*[^a-z0-9])/i

解体:

  • /启动正则表达式
  • ^匹配字符串的开头
  • (?=如果有以下内容:
    • .*任何事情(除了换行符),然后
    • [a-z0-9]字母数字字符
  • )前瞻
  • (?=如果有以下内容:
    • .*任何事情(除了换行符),然后
    • [^a-z0-9]非字母数字字符
  • )前瞻
  • /结束正则表达式
  • i不区分大小写的

用法:

if(preg_match("/^(?=.*[a-z0-9])(?=.*[^a-z0-9])/i",$newPass)) {
    //is valid..
}

如果您需要两个字母和数字,请将第一个前瞻替换为两个:

/^(?=.*[a-z])(?=.*[0-9])(?=.*[^a-z0-9])/i