我对正则表达式知之甚少,所以这对我来说非常具有挑战性。
我有一个表单,我需要确保只包含A-Z或a-z或1-0以及其他一些“已批准”字符和''(空格)。拼写出来时,我只想允许:
`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 /:;,.-()`
从另一个stackoverflow问题,我确实找到了这个正则表达式:
^((?:[A-Za-z0-9-'.,@:?!()$#/\\]+|&[^#])*&?)$
但我认为它允许太多的特殊字符,并且在笔记中,有人评论过c#所以我不确定它是否适用于我试图使用它的方式。我正在使用coldfusion,jquery和javascript。我实际上正在使用一个jQuery插件,我正在尝试为插件添加验证规则(插件是http://bassistance.de/jquery-plugins/jquery-plugin-validation/)。
表单中的无效条目示例如下: MC& I Enterprise 但MC / I是可以接受的
有人能帮忙吗?
答案 0 :(得分:3)
要开始使用正则表达式练习,您可以考虑下载正则表达式教练:http://weitz.de/regex-coach/这是一个解释正则表达式的免费程序,并允许查看正则表达式解析的工作原理。
您可以开始使用\w
简写:它匹配任何所谓的“字词”,即A-Z
,a-z
,0-9
和{{1} (但它不包括任何类型的空格);然后你可以将所需的所有字符添加到字符类中。
如果“_”(下划线)在允许的字符列表中,您可以使用此正则表达式(允许空字符串):
_
或者,如果您只想验证非空字符串,可以使用此字符串(其中包含+符号而不是*,分别表示“匹配一个或多个字符”和“匹配零个或多个字符”) :
^[\w ()/:;,.-]*$
如果允许字符列表中的“_”(下划线)不,则必须明确使用间隔:
^[\w ()/:;,.-]+$
或
^[a-zA-Z\d ()/:;,.-]*$
答案 1 :(得分:2)
以下内容应该:
'^[a-zA-Z0-9\ /:;,\.\-\(\)]*$'
我不认为冒号,逗号或分号需要转义,但如果它给你带来麻烦,也可以在这些前面加一个反斜杠。其他一些逃脱可能是矫枉过正,但不应该伤害任何东西。
答案 2 :(得分:1)
您基本上可以将已批准的字符列表转换为如下字符类:
^[a-zA-Z0-9 /:;,.\-()]+$
只有当全文只包含允许列表中的字符时才应该匹配(更复杂的规则,例如末尾没有空格等,可能需要更正规的表达。
This site是对正则表达式非常有用的介绍。