我試圖創建一個只允許字母大寫或小寫的正則表達式,以及空格,' - ','','','('和''' 。這是我迄今爲止,但由於某種原因,它仍然讓我輸入數字正則表達式只允許字母和一些字符
^[a-zA-Z -,.()]*$
任何幫助將是偉大的!謝謝。
我試圖創建一個只允許字母大寫或小寫的正則表達式,以及空格,' - ','','','('和''' 。這是我迄今爲止,但由於某種原因,它仍然讓我輸入數字正則表達式只允許字母和一些字符
^[a-zA-Z -,.()]*$
任何幫助將是偉大的!謝謝。
好吧,有一個問題,-,
被解釋爲一個範圍,如a-z
,允許從空間到逗號的所有字符。逃避並至少應該修復一些錯誤。
^[a-zA-Z \-,.()]*$
嚴格地說,你應該也難逃.
和()
,也因爲那些在正則表達式的特殊含義。 Javascript正則表達式引擎(我正在測試的)似乎在[]
的上下文中直接解釋它們,但總是明確得多。
^[a-zA-Z \-,\.\(\)]*$
然而,這仍然不應該被允許0-9
數字,因此您的實際代碼,使用這個正則表達式可能有一些問題,以及。
-
是特殊的字符類。它用於定義一個範圍,如您對a-z
所做的那樣。
要匹配你需要或者逃避它或將它,使得它會不會充當運營商範圍內字面-
:
^[a-zA-Z \-,.()]*$
^^ escaping \
或
^[-a-zA-Z ,.()]*$
^placing it at the beginning.
或
^[a-zA-Z -,.()-]*$
^placing it at the end.
並且很有意思
^[a-z-A-Z -,.()]*$
^placing in the middle of two ranges.
在最後的情況下-
是a-z
和A-Z
之間的地方,因爲這兩個周邊-
(我們想從字面上對待一個)是z
和A
已經參與範圍,在-
人物簡直是再處理。
在所有提及的方法中,推薦使用轉義方法,因爲它使您的代碼更易於閱讀和理解。任何看到\
的人都會期望逃脫的目的。將-
置於開頭(結束)會產生問題,如果您稍後在字符類中之前(之後)添加字符而不逃避-
,則會形成一個範圍。
-,
in [a-zA-Z -,.()]
描述從
(0x20)到,
(0x2C)的範圍。這相當於[ !"#$%'()*+,]
。您應該跳過-
或將其放置在不被解釋爲範圍指示符的地方。
但這不是這個問題的原因,因爲數字是從0x30到0x39。
我試過用JavaScript,它工作正常。其他人都是正確的,但。如果在JavaScript中,檢查是否一切正常,否則檢查不會發生。
轉義爲正則表達式標記的字符:。() – 2010-12-22 15:40:38
@ Mathias E:在字符組內部,您不必轉義所有正則表達式標記。 – unholysampler 2010-12-22 15:45:14
這真的是你實際使用的正則表達式嗎? – Gumbo 2010-12-22 15:46:36