【问题标题】:Easy RegEx expression for someone who knows regex了解正则表达式的人的简单正则表达式
【发布时间】:2011-04-26 13:45:39
【问题描述】:

我对正则表达式知之甚少,所以这对我来说非常具有挑战性。

我有一个表单,我需要确保它只包含 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 企业 但 MC/I 是可以接受的

有人可以帮忙吗?

【问题讨论】:

  • 在这里您可以了解更多关于正则表达式的信息:regular-expressions.info
  • b-mitch 感谢您添加该标签 Martinho-Fernandes 感谢您提供链接
  • 能否将您的问题的标题变成一个实际的问题,并具体说明您的问题。这样更容易理解和搜索。

标签: javascript jquery regex validation coldfusion


【解决方案1】:

要开始练习正则表达式,您可以考虑下载正则表达式教练:http://weitz.de/regex-coach/ 这是一个解释正则表达式并允许查看正则表达式解析工作原理的免费程序。

您可以开始使用\w 速记:它匹配任何所谓的“单词字符”,即A-Za-z0-9_(但它不包括任何类型的空格);然后你可以将你需要的所有字符添加到字符类中。

如果“_”(下划线)在允许的字符列表中,您可以使用这个正则表达式(允许空字符串):

^[\w ()/:;,.-]*$

或者,如果你只想验证非空字符串,你可以使用这个(它有 + 符号而不是 *,分别表示“匹配一个或多个字符”和“匹配零个或多个字符”) :

^[\w ()/:;,.-]+$

如果“_”(下划线)在允许的字符列表中不是,那么您必须明确使用间隔:

^[a-zA-Z\d ()/:;,.-]*$

^[a-zA-Z\d ()/:;,.-]+$

【讨论】:

  • 不要忘记 \w 匹配不在允许字符列表中的 _
  • @paolo-stefan 所有答案都是有效的,但我接受了这个答案,因为它解释了更多的解决方案而不仅仅是解决方案。
【解决方案2】:

以下应该做:

'^[a-zA-Z0-9\ /:;,\.\-\(\)]*$'

我不认为冒号、逗号或分号需要被转义,但如果它给你带来麻烦,也可以在它们前面添加一个反斜杠。其他一些逃脱可能是矫枉过正,但不应该伤害任何东西。

【讨论】:

  • 也许 + 而不是 * 以避免匹配空字符串?
  • 对于这个字符类,唯一需要转义的字符是"-"。 (即使放在课程的开头或结尾也不会。)
  • 感谢 ridgerunner,我倾向于在过度逃避事情方面犯错。 @Alex K。我应该指出这一点,这完全取决于他愿意接受什么。谢谢。
【解决方案3】:

您基本上可以将批准的字符列表转换为字符类,如下所示:

^[a-zA-Z0-9 /:;,.\-()]+$

仅当全文仅包含允许列表中的字符时才应匹配(更复杂的规则,例如末尾没有空格等可能需要更多的正则表达式。

This site 是对正则表达式非常有用的介绍。

【讨论】:

  • 至少,你不需要转义-吗?
猜你喜欢
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多