2013-06-28 93 views
-4

正则表达式表达任何人可以建议将弦乐,验证下列条件的正则表达式:的撇号

  1. 可容纳的字符a-z或A-Z。至少有一个应该在那里。
  2. 可以包含(空格),“(单引号),连字符( - ),(点)等

任何比这一套,如特殊字符或数字或其他任何东西,将是无效字符。

+1

你能告诉我们你试过的东西吗?为什么它不起作用? –

+0

'[a-zA-Z \ s'\ - \。] +'您正在用'+'量词找一个类。 –

+0

[阅读一些教程](http://www.regular-expressions.info/tutorial.html),你应该很容易就能够自己做到这一点 – musefan

回答

4

像这样的东西应该工作

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

翻译为“至少一个字母零个或多个任何有效字符的”包围。

1

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

这里也许有成千上万的问题上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-]*$/ 

我与我的实施例的测试,在我的代码中插入(作品!)。第二天早晨,我最深的尴尬,有人在我的网站提供这种“telefone号”登记:

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

这个故事的寓意是:从来没有验证“弦”。验证域对象!

要回答这个特定的问题:我不能给你一个很好的正则表达式,直到你告诉我它是什么。