撇号的正则表达式

时间:2013-06-28 13:15:34

标签: javascript regex

任何人都可以建议什么是String的regexp,它验证以下条件:

  1. 可以包含字符a-z或A-Z。至少应该有一个。
  2. 可以包含(空格),'(撇号), - (连字符),。(点)
  3. 除此设置之外的任何内容(例如特殊字符或数字或其他任何内容)都将是无效字符。

2 个答案:

答案 0 :(得分:4)

这样的事情应该有效

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

这意味着'至少有一个由零个或多个有效字符包围的字母'。

答案 1 :(得分:1)

我通常不回答gimme codez的问题,但是嘿,这是星期五!

这里有数以千计的问题可以遵循相同的模式:

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-----------

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

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