2012-05-16 34 views

回答

10

下面的正則表達式應該是你正在尋找(下文解釋):

\A[-\w.]*\z 

以下字符類應該僅匹配要允許字符:

[-a-zA-z0-9_.] 

您可以縮短這對因爲\w以下是相當於[a-zA-z0-9_]

[-\w.] 

需要注意的是,包括你的性格類文字-,它需要是第一個字符,否則它將被解釋爲一個範圍(例如[a-d]相當於[abcd])。另一種選擇是用反斜槓轉義它。

通常.意味着除換行符之外的任何字符,並且您需要將其轉義以匹配文字句點,但在字符類中這不是必需的。

\A\z是錨開始和結束的字符串,否則你將匹配,而不是包含只有允許的字符字符串包含任何允許的字符字符串。

*表示零個或多個字符,如果您希望它需要一個或多個字符,則將*更改爲+

+0

F.J:謝謝! – user984621

+0

我喜歡你的解釋,但這不適用於我。@ seamus-abshere的答案很好。 – monteirobrena

+0

這將如何在JavaScript上工作​​? – Louie

4

/\A[\w\-\.]+\z/

  • \w意味着字母數字(不區分大小寫)和 「_」
  • \-裝置破折號
  • \.意味着週期
  • \A裝置開始(甚至比^ 「更強」)
  • \z意味着結束(甚至比「0123更強」)

例如:

>> 'a-zA-z0-9._' =~ /\A[\w\-\.]+\z/ 
=> 0 # this means a match 

修訂感謝phrogz改進

+0

您可能希望將其封裝在'/ \ A ... \ z /'中,以便OP可以確保具有有效子字符串的無效字符串不匹配。另外,當你使用'\ w'時'''是不必要的。 – Phrogz

+0

Seamus:謝謝! – user984621

相關問題