回答
Posix character classes使用[:alpha:]
符號,其中使用正則表達式中,如:
/[[:alpha:][:digit:]]/
你需要向下滾動的方式去在上面的鏈接POSIX的信息。從文檔:
POSIX括號表達式也類似於字符類。它們爲上述提供了一種便攜式替代方案,而且還包含非ASCII字符。例如,/ \ d /只匹配ASCII十進制數字(0-9);而/ [[:digit:]] /匹配Unicode Nd類別中的任何字符。
/[[:alnum:]]/ - Alphabetic and numeric character
/[[:alpha:]]/ - Alphabetic character
/[[:blank:]]/ - Space or tab
/[[:cntrl:]]/ - Control character
/[[:digit:]]/ - Digit
/[[:graph:]]/ - Non-blank character (excludes spaces, control characters, and similar)
/[[:lower:]]/ - Lowercase alphabetical character
/[[:print:]]/ - Like [:graph:], but includes the space character
/[[:punct:]]/ - Punctuation character
/[[:space:]]/ - Whitespace character ([:blank:], newline,
carriage return, etc.)
/[[:upper:]]/ - Uppercase alphabetical
/[[:xdigit:]]/ - Digit allowed in a hexadecimal number (i.e., 0-9a-fA-F)
紅寶石還支持以下非POSIX字符類:
/[[:word:]]/ - A character in one of the following Unicode general categories Letter, Mark, Number, Connector_Punctuation
/[[:ascii:]]/ - A character in the ASCII character set
# U+06F2 is "EXTENDED ARABIC-INDIC DIGIT TWO"
/[[:digit:]]/.match("\u06F2") #=> #<MatchData "\u{06F2}">
/[[:upper:]][[:lower:]]/.match("Hello") #=> #<MatchData "He">
/[[:xdigit:]][[:xdigit:]]/.match("A6") #=> #<MatchData "A6">
此答案已添加到[字符類別]下的[Stack Overflow Regular Expression FAQ](http://stackoverflow.com/a/22944075/2736496)。 – aliteralmind
'[['沒有任何特別的含義。 [xyz]
是一個字符類,將匹配一個單獨的x
,y
或z
。克拉^
採取所有不在括號中的字符。
爲簡單起見,刪除^
可以看到第一個開放式支架與第一個緊密支架相匹配,而第二個封閉支架正用作角色類的一部分。最後的右括號被視爲另一個要匹配的字符。
irb(main):032:0> /[[abc]]/ =~ "[a]"
=> 1
irb(main):033:0> /[[abc]]/ =~ "a]"
=> 0
這似乎有相同的結果,你原來在某些情況下
irb(main):034:0> /[abc]/ =~ "a]"
=> 0
irb(main):034:0> /[abc]/ =~ "a"
=> 0
但是,這僅僅是因爲你的正則表達式是不是找一個精確匹配。
irb(main):036:0> /^[abc]$/ =~ "a]"
=> nil
請注意,這不是所有的正則表達式風格。例如,Java將它視爲一個只包含另一個字符類的字符類,因此'[[^ abc]]'和'[^ abc]'實際上是相同的。 –
FWIW - Python與上面的答案具有相同的行爲,不確定其他語言或者它應該做什麼,儘管我更喜歡@AlanMoore提到的行爲。 – dfb
- 1. 正則表達式如何讓雙引號包括雙引號
- 2. 雙括號的正則表達式
- 3. 如何包括雙引號(「)在正則表達式
- 4. 括號正則表達式
- 5. 正則表達式 - 括號
- 6. 正則表達式括號
- 7. 正則表達式中使用括號如何使用Javascript?
- 8. 正則表達式 - 僅在大括號內標識雙引號
- 9. 正則表達式在雙括號內逗號前的文本
- 10. 在Emacs正則表達式中匹配雙花括號?
- 11. VB.Net正則表達式替換括號內的雙引號
- 12. 正則表達式中的雙引號
- 13. 括號在正則表達式
- 14. 正則表達式不在括號內
- 15. MYSQL正則表達式在方括號
- 16. 用於雙括號關鍵字的PHP正則表達式
- 17. 如何使用正則表達式匹配括號?
- 18. 正則表達式:如何在大括號中得到大括號中的值
- 19. Python的正則表達式爲多個分隔符,包括使用正則表達式雙引號
- 20. 使用括號檢測雙引號javascript對象屬性的正則表達式
- 21. 正則表達式返回true,即使逗號不用雙引號括起來
- 22. 在PowerShell中使用正則表達式匹配括號
- 23. 使用括號在javascript正則表達式中驗證布爾表達式
- 24. 如何在正則表達式中排除尖括號?
- 25. 如何檢查是否在括號中的正則表達式
- 26. 如何在R的正則表達式中逸出閉括號「]」
- 27. 使用雙括號捕獲html標籤樣式語法的正則表達式
- 28. 正則表達式,以消除匹配雙括號分隔子
- 29. 正則表達式獲取雙花括號內的值「{{}}」
- 30. Java的正則表達式來雙方括號
我創建[展開 - 括號](https://www.npmjs.com/package/展開括號),如果你有興趣看到與posix字符類匹配的javascript實現 – jonschlinkert