用正则表达式验证正则句语法

时间:2011-10-23 06:21:44

标签: php regex grammar

所以我想根据字符串是否只包含语法字符以及数字和字母来验证字符串。(基本上是AZ,az,0-9,加上句点(。),逗号(,)冒号(: ),分号(;),连字符( - ),单引号('),双引号(“)和括号()。我收到一个PHP错误,上面写着”编译失败:字符串中的范围乱序“。我应该使用正则表达式代码吗?

这是我目前正在使用的那个: ^[a-zA-Z0-9_:;-()'\" ]*^

2 个答案:

答案 0 :(得分:2)

您需要转义-,然后转为^[a-zA-Z0-9_:;\-()'\" ]*-在字符集中具有特殊含义,因此需要对其进行转义。 ^最终也没有必要。正则表达式也可以使用\w这样简化

^[\w:;()'"\s-]*

\w匹配字母,数字和下划线。

答案 1 :(得分:2)

问题是你在正则表达式中有一个短划线字符,解析器将其解释为范围而不是文字短划线。你可以通过以下方式解决这个问题:

  • 使用反斜杠(^[a-zA-Z0-9_:;\-()'\" ]*^
  • 转义它
  • 将其置于开头(^[-a-zA-Z0-9_:;()'\" ]*^
  • 把它放在最后(^[a-zA-Z0-9_:;()'\" -]*^