【问题标题】:Regex expression for Apostrophe [closed]撇号的正则表达式 [关闭]
【发布时间】:2013-06-28 13:15:34
【问题描述】:

任何人都可以建议什么是字符串的正则表达式,它验证以下条件:

  1. 可以包含字符 a-z 或 A-Z。至少应该有一个。
  2. 可以包含(空格)、'(撇号)、-(连字符)、.(点)

除此之外的任何字符,例如特殊字符或数字或其他任何字符,都将是无效字符。

【问题讨论】:

  • 你能告诉我们你尝试了什么以及为什么没有成功吗?
  • [a-zA-Z\s'\-\.]+ 你正在寻找一个带有+ 量词的类。
  • read some tutorials,你应该很容易自己解决这个问题
  • 如果我理解正确,OP 希望 a-z 是强制性的,其余的是可选的。 [a-zA-Z\s'\-\.]+ 将匹配 "'-."
  • @musefan:这里不放弃农场,只是举个例子。我仍然相信帮助那些自助的人。他们可以拿走另外 10%。 ;-)

标签: javascript regex


【解决方案1】:

这样的东西应该可以工作

 /^[a-zA-Z' \.\-]*[a-zA-Z]+[a-zA-Z' \.\-]*$/

这意味着“至少一个字母被零个或多个任何有效字符包围”。

【讨论】:

    【解决方案2】:

    我通常不回答给我代码的问题,但是今天是星期五!

    这里可能有数千个关于 SO 的问题遵循相同的模式:

    Plz help me with a regular expression for a string that
    - _must_ contain at least one X
    - _can_ contain Y
    

    答案通常是这样的

    /^ Y* X [XY]* $/
    

    或者如果你喜欢

    /^ (?=.*X) [XY]+ $
    

    很遗憾,所有这些答案(或者更确切地说,这些问题)都是错误的。像往常一样,问题在于规范不正确 - 提问者采用了一些“好”的例子并在问题中描述它们,但没有意识到这种描述也与许多“坏”的情况相匹配。从字面上看,这个问题将用一个只完成一半工作的表达式来回答——是的,它确实验证了好案例,但它不会拒绝坏案例。一个好的表达必须两全其美!

    示例:我想验证电话号码,类似于123123-456-789。所以我在 SO 上发布了一个问题:

    Plz help me with a regular expression:
    - must contain at least one digit
    - can contain a dash
    

    几秒钟后我就明白了

    /^-*\d[\d-]*$/
    

    我用我的示例测试(有效!)并插入到我的代码中。第二天早上,让我最尴尬的是,有人在我的网站上注册并提供了这个“电话号码”:

    ----------3-----------
    

    故事的寓意:永远不要验证“字符串”。验证域对象!

    要回答这个具体问题:在您告诉我它的用途之前,我无法为您提供一个好的正则表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      相关资源
      最近更新 更多