2013-06-28 64 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----------- 

這個故事的寓意是:從來沒有驗證「弦」。驗證域對象!

要回答這個特定的問題:我不能給你一個很好的正則表達式,直到你告訴我它是什麼。