所以我想根据它是否只包含语法字符以及数字和字母来验证字符串。(基本上是A-Z, A-Z, 0-9,加上句号(.),逗号(,),冒号(:),分号(;),连字符(-),单引号('),双引号(")和圆括号()。我得到一个PHP错误,说"编译失败:范围无序的字符类"。我应该使用什么正则表达式代码?
这是我目前使用的一个:^[a-zA-Z0-9_:;-()''" ]*^
你需要转义-
,然后变成这个^[a-zA-Z0-9_:;'-()''" ]*
。-
在字符集内具有特殊的含义,需要进行转义。最后^
也是没有必要的。regex也可以使用'w
简化,如下所示
^['w:;()'"'s-]*
'w
匹配字母、数字和下划线
问题是正则表达式中有一个破折号字符,解析器将其解释为一个范围,而不是一个文字破折号。您可以通过以下命令修复:
- 用反斜杠转义(
^[a-zA-Z0-9_:;'-()''" ]*^
) - 把它放在开始位置(
^[-a-zA-Z0-9_:;()''" ]*^
) - 把它放在最后(
^[a-zA-Z0-9_:;()''" -]*^
)