如何編寫僅匹配字母的正則表達式?正則表達式僅匹配字母
回答
使用字符集:[a-zA-Z]
與小寫和大寫的A-Z中的一個字母匹配。 [a-zA-Z]+
匹配一個或多個字母,並且^[a-zA-Z]+$
僅匹配只包含一個或多個字母的字符串(^
和$
分別標記字符串的開頭和結尾)。
如果要匹配除A-Z之外的其他字母,可以將它們添加到字符集:[a-zA-ZäöüßÄÖÜ]
。或者您使用預定義的字符類,如Unicode character property類\p{L}
,它描述了字母的Unicode字符。
這是一個非常以ASCII爲中心的解決方案。這幾乎會打破任何非英文文本。 – 2010-09-01 12:13:14
@Joachim Sauer:它寧可打破使用非拉丁字符的語言。 – Gumbo 2010-09-01 12:17:59
德語文本的90%已經打破了,甚至不提法文或西班牙文。儘管意大利人仍然可以做得很好。 – 2010-09-01 12:22:32
\p{L}
匹配任何是一個Unicode字母,如果你有興趣字母超越拉丁一個
並非所有正則表達式。例如,vim正則表達式將'\ p'視爲「可打印字符」。 – 2010-09-01 12:12:28
那麼在支持unicode的,然後正則表達式 – RobV 2010-09-01 12:13:19
[此頁]任何正則表達式引擎(http://www.regular-expressions.info/refflavors.html)認爲只有Java中,.NET,PERL,jgsoft,XML和XPath的正則表達式的支持\ p {L}。但重大遺漏:python和ruby(儘管python有正則表達式模塊)。 – 2010-09-01 12:16:33
根據你的 「個性」 的含義:
[A-Za-z]
- 所有字母(大寫和小寫)
[^0-9]
- 所有非數字字符
我的意思是說。它似乎沒有工作。 preg_match('/ [a-zA-Z] + /',$ name); – Nike 2010-09-01 12:19:01
[A-Za-z]只是您可以使用的字符聲明。您仍然需要聲明如何使用此聲明:[A-Za-z] {1,2}(匹配1或2個字母)或[A-Za-z] {1,*}(以匹配1個或多個字母) – Molske 2010-09-01 13:06:41
井A,A,A,O,A ......是信了,所以是অ,আ,ই,ঈ,Є,Ж,З,ح,خ,دא,ב,ג,ש ,ת,... https://en.wikipedia.org/wiki/Letter_%28alphabet%29 – 2016-09-20 09:50:37
對於PHP,下面如果你的意思是何字符編碼的任何信件將正常工作
'/^[a-zA-Z]+$/'
,然後一個很好的辦法可能是刪除非字母狀空間\s
,數字\d
,以及其他特殊字符,如:
[[email protected]#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]
或使用以上否定之否定直接描述的信:
\S \D and [^ ..special chars..]
優點:
- 適用於所有的正則表達式的口味。
- 易寫,有時節省很多時間。
缺點:
- 長,有時並不完美,但字符編碼也可被打破。
只需使用\w
或[:alpha:]
。這是一個轉義序列,它只匹配可能出現在文字中的符號。
在所有情況下,'\ w'可能不是一個好的解決方案。至少在PCRE中,'\ w'也可以匹配其他字符。引用[PHP手冊](http://uk3.php.net/manual/en/regexp.reference.escape.php):「*」單詞「字符是任何字母或數字或下劃線字符,也就是說,任何可以成爲Perl「單詞」一部分的字符字母和數字的定義由PCRE的字符表來控制,如果發生特定於語言環境的匹配,字母和數字的定義可能會有所不同,例如,在「fr」(法語)區域設置,一些大於128的字符代碼用於重音字母,並且這些符號由\ w。*「匹配。 – 2014-06-08 19:56:26
詞包括字母 – 2015-05-15 03:05:55
其他字符'\ w'意味着匹配的字母和數字 – 2016-08-26 16:10:33
圖案=/[A-ZA-Z]/
看跌期權 「[1 - ZA-Z]:#{pattern.match(」 礦開花 「)}」 OK
看跌期權「[一個-ZA-Z]:#{pattern.match( 「456」)} 「
看跌期權 」[1 - ZA-Z]:#{pattern.match(「 」)}「
看跌期權」 [a-zA-Z]:#{pattern.match(「#$%^ & *」)}「
puts」[a-zA-Z]:#{pattern.match(「#$%^ & * A「)}」OK
您可以試試以下正則表達式:[^\W\d_]
或[a-zA-Z]
。
這不是什麼'[^ \ W | \ d]'意味着 – OGHaza 2014-07-25 13:34:24
'[^ \ W | \ d]'表示不'\ W'而不是'|'而不是'\ d'。它具有相同的淨效果,因爲'|是'\ W'的一部分,但是'|'不像你認爲的那樣工作。即便如此,這意味着它接受'_'字符。您可能正在尋找'[^ \ W \ d_]' – OGHaza 2014-07-25 14:47:32
我同意你的意見,它接受'_'。但是, 「NOT」'|'大於等於 「AND」,所以'[^ \ W | \ d]'表示:NOT'\ W' **和**不是'\ D' – Motlab 2014-07-25 15:01:18
最近的可用選項是
[\u\l]+
其中的大寫和小寫字母的順序一致。但是,並非所有的編輯器/語言的支持,所以它可能是更安全的使用
[a-zA-Z]+
其他用戶建議
雖然不匹配任何特殊字符。 – Nyerguds 2016-05-25 06:25:14
你會使用
/[a-z]/gi
[] - 檢查給定輸入之間的任何字符
az ---涵蓋整個字母表
g --- --globally在整個字符串
我-----越來越大寫和小寫
Pattern pattern = Pattern.compile("^[a-zA-Z]+$");
if (pattern.matcher("a").find()) {
...do something ......
}
這幾個人寫的正則表達式 「/^[A-ZA-Z] $ /我」是不正確的,因爲在最後,他們都提到/我這是不區分大小寫並首次將返回匹配之後。代替/我只是使用/克這是全球性的,你也沒有任何需要把^$爲開始和結束。 [_ A-Z] +匹配單個字符存在於低於
/[a-zA-Z]+/g
- :+之間一個和無限次,多次地,用之於根據需要
- AZ的範圍內的單個字符a和z(區分大小寫)
- AZ之間的單個字符在A和Z(區分大小寫)
- 克改性劑之間的範圍內:全球。所有的比賽(不上的第一場比賽返回)
String string= "abcdef";
if(string.match("^[a-zA-Z]+$$")){
System.out.println("string only contains letters");
}
- 1. 正則表達式匹配一個字母字母和數字
- 2. 正則表達式 - 僅匹配括號
- 3. 正則表達式僅匹配空格
- 4. 正則表達式的Java非字母數字字符匹配
- 5. 正則表達式匹配字母數字字符和符號(&)
- 6. 正則表達式匹配未知字母數字字符數
- 7. 與非字母數字字符匹配的正則表達式
- 8. 正則表達式正則表達式匹配字符串
- 9. 奇怪的正則表達式(正則表達式)匹配!不匹配數字
- 10. 正則表達式:僅匹配帶前面小寫字母的字符
- 11. 正則表達式匹配字符串僅包含特定字母
- 12. 字母和數字的組合匹配正則表達式
- 13. 正則表達式匹配字母,數字和某些符號
- 14. 正則表達式MySQL - 匹配前兩個字母,x數字
- 15. 正則表達式匹配的是數字,而不是字母
- 16. 正則表達式 - 不匹配的字母字符(C#)
- 17. Java正則表達式字母數字匹配
- 18. 正則表達式非匹配的數字和字母
- 19. 匹配字母字符正則表達式變量只
- 20. 可變的正則表達式匹配的字母數字
- 21. 正則表達式匹配前面沒有字母的數字
- 22. 正則表達式主要匹配字母數字路徑
- 23. NSPredicate與正則表達式匹配國際字母字符集
- 24. 正則表達式匹配連續n(字母數字)
- 25. 字符串首字母匹配正則表達式
- 26. Perl正則表達式匹配字母數字
- 27. 在正則表達式中匹配特殊字符和字母
- 28. C#正則表達式匹配字母,數字和下劃線
- 29. 匹配字母后跟數字的正則表達式
- 30. 如何使用正則表達式來匹配字母字符?
你對字符的定義是什麼? ASCII?漢子? ISO-XXXX-X? UTF8? – 2010-09-01 12:10:11
您對「正則表達式」的定義是什麼? Perl的? Emacs的? grep的? – 2010-09-01 12:17:24