[轉自]http://www.cnblogs.com/symbol441/archive/2007/11/24/971170.html
正則匹配模式
匹配模式指得是正則表達式引擎將以何種模式匹配字符串。
模式名稱 | 啓用,禁用 | 缺省啓用 | 說明 |
UNIX_LINES | (?d)啓用,(?-d)禁用 | 是 |
啓用Unix行模式。 在此模式下,只有 '\n'被認爲是行結束符。它會影響., ^, 和 $ 的行爲。 |
CASE_INSENSITIVE | (?i)啓用,(?-i)禁用 | 否 |
啓用忽略大小寫模式。 缺省時,忽略大小寫模式只會影響 ASCII字符的匹配。 而Unicode範圍的忽略大小寫匹配需要通過 UNICODE_CASE 標誌與本標誌聯合使用。 啓用此模式會影響匹配性能。 |
COMMENTS | (?x)啓用,(?-x)禁用 | 否 |
允許空格和註釋出現在正則表達式中。 在此模式下,空格被忽略,以#開始的單行註釋被忽略。 |
MULTILINE | (?m)啓用,(?-m)禁用 | 是 |
啓用多行模式。 In multiline mode the expressions ^ and $ match just after or just before, respectively, a line terminator or the end of the input sequence. By default these expressions only match at the beginning and the end of the entire input sequence. |
DOTALL | (?s)啓用,(?-s)禁用 | 否 |
讓.可以匹配行結束符。 在此模式下,元字符.可以匹配行結束符。缺省不允許如此匹配。 |
UNICODE_CASE | (?u)啓用,(?-u)禁用 | 否 |
Enables Unicode-aware case folding. When this flag is specified then case-insensitive matching, when enabled by the CASE_INSENSITIVE flag, is done in a manner consistent with the Unicode Standard. By default, case-insensitive matching assumes
that only characters in the US-ASCII charset are being matched. 啓用此模式會影響性能。 |
CANON_EQ | (?c)啓用,(?-c)禁用 | 否 |
Enables canonical equivalence. When this flag is specified then two characters will be considered to match if, and only if, their full canonical decompositions match. The expression"a\u030A", for example, will match the string "?" when this flag is specified. By default, matching does not take canonical equivalence into account. 啓用此模式會影響性能。 |
字符子集
字符子集可以含有別的字符子集,並且可以通過聯合操作符(缺省)和交集操作符(&&)實現組合。聯合操作符表示某個子集匹配它的子子集所匹配的任意字符。交集操作符表明某個字符子集只匹配它的子子集都匹配的字符。字符子集所能夠有的操作符的優先級如下,從高到低:
- 轉義符\x
- 成組符 [...]
- 區間符 a-z
- 聯合符 [a-e][i-u]
- 交集符 [a-z&&[aeiou]]
行結束符
行結束符是一個或兩個字符序列,用以表明輸入字符序列中一行的結束。下面的字符被認爲是行結束符:- 一個換行符('\n')。
- 一個回車符加上一個換行符("\r\n")。
- 一個單獨的回車符('\r')。
- 代表下一行的字符('\u0085')。
- 行分隔符('\u2028'),Unicode中被定義。
- 一個分段符('\u2029),Unicode中被定義。
如果 MULTILINE 模式被啓用,。
分組和引用
字符分組以它們的左括號的出現順序來排序。例如在表達式((A)(B(C))),有四個分組:- ((A)(B(C)))
- (A)
- (B(C))
- (C)
分組採用這樣的命名方式,是因爲,在一次匹配過程中,正則表達式會被匹配多次。以前的匹配子序列有可能在將來被使用;或者在匹配結束時,程序有可能需要重新獲得所有匹配的子字符序列。
對於正則表達式中的某個分組而言,永遠只保留最後匹配的字符序列。如果對某個分組匹配嘗試失敗,則會保留上次匹配成功的字符序列。例如,對於正則表達式(a(b)?)+而言,字符序列"aba",將會讓分組2匹配的字符序列爲"b"。
以(?開始的分組,將不會計入分組數目,也不會被後續匹配所引用。
Unicode支持
本正則表達式匹配引擎的實現遵循了《Unicode技術報告:Unicode正則表達式指南》,實現了該指南的第二層所需的功能,但是在細微處有一些簡單語法修改。Unicode塊(Block)和分類(Category)通過\p和\P通配苻表示。\p{prop}匹配含有prop的輸入序列,而\P{prop}匹配不含有prop的輸入序列。Unicode塊通過前綴In表示,如\p{InMongolian}。Unicode分類通過可選的前綴Is表示,因此\p{L}和\p{IsL}都代表Unicode分類 letters。Unicode塊和分類都可以在正則表達式子集外部和內部使用。
目前支持的Unicode塊和分類是《Unicode標準,第三版》中所指定的塊和分類。 Unicode塊名稱在《Unicode 字符數據庫》的第14章被定義,文件名稱叫Blocks-3.txt,但是名稱中的空格被去掉了。例如"Basic Latin"成了"BasicLatin"。無論是標準化的還是非標準化的分類,都在該標準的第88頁的第4-5表中被全部定義。
與Perl 5正則表達式語法對比
[TBD]正則表達式參考
字符
正則表達式字符串 | 匹配的字符串 |
X | 字符X,包括 CJK ExtB 區漢字 |
\\ | 反斜槓\ |
\0n | 八進制0n代表的字符(0<=n<=7) |
\0nn | 八進制0nn代表的字符(0<=n<=7) |
\0mnn | 八進制0mnn代表的字符(0<=m<=3,0<=n<=7) |
\xhh | 十六進制 0xhh所代表的字符 |
\uhhhh | 十六進制 0xhhhh所代表的字符。注意,目前尚不支持CJK ExtB區漢字。 |
\t | 製表符('\u0009') |
\n | 換行('\u000A') |
\r | 回車('\u000D') |
\a | 響鈴符('\u0007') |
\e | 取消符Escape('\001B') |
\cx | x所代表的控制字符 |
邏輯操作符
正則表達式字符串 | 匹配的字符串 |
XY | X後面跟隨Y |
X|Y | X或者Y |
(X) | X作爲分組表達式 |
向後引用
正則表達式字符串 | 匹配的字符串 |
\n | 第n個匹配的分組 |
邊界元字符
邊界字符 | 匹配的字符串 |
^ | 行首 |
$ | 行末 |
\b | 字符邊界 |
\B | 非字符邊界 |
\A | 輸入流的開始 |
\G | 上次匹配的結束處 |
\Z | 輸入流的結束,或者是最後一個行結束符,參見行結束符。 |
\z | 輸入流的結束 |
重複指示符
正則表達式字符串 | 匹配的字符串 |
X? | X重複一次,或者不重複 |
X* | X重複0次或多次 |
X+ | X重複1次或多次 |
X{n} | X重複n次,不多也不少。 |
X{n,} | X至少重複n次 |
X{n,m} | X至少重複n次,至多重複m次。 |
字符子集
正則表達式字符串子集 | 匹配的字符串 | 組合方式 |
[abc] | 字符a,b或c,包括 CJK ExtB 區漢字 | 簡單子集 |
[^abc] | 任意非a,b或c的字符。 | 排除 |
[a-zA-Z] | 從a到z,或者A到Z,包含a,z,A,Z。 | 區間 |
[a-d[m-p]] | 從a到d,或者m到p,等於[a-dm-p]。 | 聯合 |
[a-z&&[def]] | d,e或者f。 | 交集 |
[a-z&&[^bc]] | 從a到z,除了b和c,等於[ad-z] | 扣除 |
[a-z&&[^m-p]] | 從a到z,並且不包括從m到p,等於[a-lq-z] | 扣除 |
預定義子集(元字符)
邊界字符 | 匹配的字符串 |
. | 任意字符,可能匹配行結束符。 |
\d | 數字[0-9] |
\D | 非數字[^0-9] |
\s | 空白符[ \t\n\x0B\f\r] |
\S | 非空白符[^\s] |
\w | 單詞符,包含有字母和數字[a-zA-Z_0-9] |
\W | 非單詞符,不包含有字母和數字。 |
擴展子集(元字符)
正則表達式字符串 | 匹配的字符串 |
擴展中文子集(元字符)
名稱 | 塊名稱(\p{InXXX}) | 簡化通配符 | 標準Unicode塊,或者漢字列表 |
任意雙字節字符(漢字或全角符號) | \p{InQuqnJiao} | \E |
任意由GBK表示的漢字,不包括GB18030擴展部分, 以及CJK ExtB區的漢字。 |
任意單字節字符 | \p{InFQuanJiao} | \~E | 任意單字節字符。 |
任意全角ASCII字符 | \p{InQJAscii} | \H | 標準HalfwidthandFullwidthForms塊 |
任意收錄在BIG5碼集中的雙字節字符 | \p{InBig5} | \I | Big5可編碼雙字節字符 |
匹配未收錄在BIG5碼集中的雙字節字符 | \p{InFBig5} | \~I | 非Big5可編碼雙字節字符 |
匹配任意漢字(不包括符號) | \p{InHanziOrCJKExtB} | \X | 任意漢字,包括GB18030擴展部分。 |
匹配任意漢字(不包括符號) | \p{InHanzi} | \M | 任意漢字,不包括GB18030擴展部分。 |
匹配非漢字的雙字節字符 | \p{InFHanzi} | \~M |
任意非漢字的雙字節字符, 包括GB18030擴展部分。 |
地支字符 | \p{InDiZhi} | \U | 子醜寅卯辰巳午未申酉戌亥 |
匹配收錄在GB碼集中的雙字節字符 | \p{InGB} | \g |
收錄在GB碼集中的雙字節字符, 不包括GB18030擴展部分。 |
匹配非收錄在GB碼集中的雙字節字符 | \p{InFGB} | \~g |
未收錄在GB碼集中的雙字節字符, 不包括GB18030擴展部分。 |
匹配收錄在GBK碼集中的雙字節字符 | \p{InGBK} | \h |
收錄在GBK碼集中的雙字節字符, 不包括GB18030擴展部分。 |
匹配非收錄在GBK碼集中的雙字節字符 | \p{InFGBK} | \~h |
未收錄在GBK碼集中的雙字節字符, 不包括GB18030擴展部分。 |
大寫希臘字母 | \p{InDaXila} | \K |
ΑΒΓΔΕΖΗΘΙΚΛΜΝ ΞΟΠΡΣΤΥΦΧΨΩ |
日文片假名 | \p{InPianJia} | \j | 標準Katakana塊 |
日文平假名 | \p{InPingJia} | \J | 標準Hiragana塊 |
小寫希臘字母 | \p{InXiaoXila} | \k |
αβγδεζηθικλμν ξοπρστυφχψω |
數學符號 | \p{InMathe} | \m |
±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙ ∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴ |
中文數字 | \p{InCnDigit} | \i | 〇一二三四五六七八九十百千萬億兆吉京 |
大寫中文數字 | \p{InDaCnDigit} | \N | 零壹貳叄肆伍陸柒捌玖拾佰仟萬億兆吉京 |
全角標點符號 | \p{InQJBiaoDian} | \o |
、。·ˉˇ¨〃々—~‖…‘’“”〔〕 〈〉《》「」『』〖〗【】!"'(), -.:;<=>?[]{|}`﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚ ﹛﹜﹝﹞︵︶︹︺︿﹀︽︾﹁﹂﹃﹄ ︻︼︷︸︱︳︴ |
小寫俄文字母 | \p{InXiaoEWen} | \l |
абвгдеёжзийклмн опрстуфхцчшщъыьэюя |
大寫俄文字母 | \p{InDaEWen} | \R |
АБВГДЕЁЖЗИЙКЛМНО ПРСТУФХЦЧШЩЪЫЬЭЮЯ |
中文序號 | \p{InCnSN} | \q |
ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ 再加上Unicode標準EnclosedAlphanumerics塊 |
天干字符 | \p{InTianGan} | \T | 甲乙丙丁戊己庚辛壬癸 |
豎排標點符號 | \p{InSPBiaoDian} | \V | ︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴ |
拼音字符 | \p{InPinyin} | \y |
āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡ GBK -> 0xA8A1- 0xA8C0 只是Unicode標準LatinExtended-A塊的一部分。 |
注音字符 | \p{InZhuyin} | \Y | 標準Bopomofo塊 |
製表字符 | \p{InZhiBiao} | \C |
標準BoxDrawing塊。 經檢查發現 textpro 的算法含有部分非標 準Unicode製表符:“∟∣≒≦≧⊿═”。 |
POSIX字符子集(只適用於ASCII)
正則表達式字符串 | 匹配的字符串 |
\p{Lower} | 小寫字母[a-z] |
\p{Upper} | 大寫字母[A-Z] |
\p{ASCII} | 所有的ASCII字符[\x00-\x7F] |
\p{Alpha} | 大小寫字母[\p{Lower}\p{Upper}] |
\p{Digit} | 數字[0-9] |
\p{Alnum} | 字母數字符,包含大小寫字母和數字[\p{Alpha}\p{Digit}] |
\p{Punct} | 標點符號,!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~之一。 |
\p{Graph} | 可顯示字符[\p{Alnum}\p{Punct}] |
\p{Print} | 可打印字符[\p{Graph}] |
\p{Blank} | 空格或者製表符[ \t] |
\p{Cntrl} | 控制字符[\x00-\x1F\x7F |
\p{XDigit} | 十六進制數字[0-9a-fA-F] |
\p{Space} | 空白符[ \t\n\x0B\f\r] |
Unicode塊和分類
塊 | 中文名稱(摘自Word XP) | 代碼區域 |
BasicLatin | 基本拉丁語 | \u0000-\u007F |
Latin-1Supplement | 拉丁語-1 | \u0080-\u00FF |
LatinExtended-A | 拉丁語擴充-A | \u0100-\u017F |
LatinExtended-Bound | 拉丁語擴充-B | \u0180-\u024F |
IPAExtensions | 國際音標擴充 | \u0250-\u02AF |
SpacingModifierLetters | 進格的修飾字符 | \u02B0-\u02FF |
CombiningDiacriticalMarks | 組合用發音符 | \u0300-\u036F |
Greek | 基本希臘語 | \u0370-\u03FF |
Cyrillic | 西里爾語 | \u0400-\u04FF |
Armenian | \u0530-\u058F | |
Hebrew | \u0590-\u05FF | |
Arabic | \u0600-\u06FF | |
Syriac | \u0700-\u074F | |
Thaana | \u0780-\u07BF | |
Devanagari | \u0900-\u097F | |
Bengali | \u0980-\u09FF | |
Gurmukhi | \u0A00-\u0A7F | |
Gujarati | \u0A80-\u0AFF | |
Oriya | \u0B00-\u0B7F | |
Tamil | \u0B80-\u0BFF | |
Telugu | \u0C00-\u0C7F | |
Kannada | \u0C80-\u0CFF | |
Malayalam | \u0D00-\u0D7F | |
Sinhala | \u0D800-\uDFF | |
Thai | \u0E00-\u0E7F | |
Lao | \u0E80-\u0EFF | |
Tibetan | 藏語 | \u0F00-\u0FFF |
Myanmar | \u1000-\u109F | |
Georgian | \u10A0-\u10FF | |
HangulJamo | \u1100-\u11FF | |
Ethiopic | \u1200-\u137F | |
Cherokee | \u13A0-\u13FF | |
UnifiedCanadianAboriginalSyllabics | \u1400-\u167F | |
Ogham | \u1680-\u169F | |
Runic | \u16A0-\u16FF | |
Khmer | \u1780-\u17FF | |
Mongolian | 蒙古語 | \u1800-\u18AF |
LatinExtendedAdditional | \u1E00-\u1EFF | |
GreekExtended | \u1F00-\u1FFF | |
GeneralPunctuation | 廣義標點 | \u2000-\u206F |
SuperscriptsandSubscripts | \u2070-\u209F | |
CurrencySymbols | 貨幣符號 | \u20A0-\u20CF |
CombiningMarksforSymbols | \u20D0-\u20FF | |
LetterlikeSymbols | 類似字母的符號 | \u2100-\u214F |
NumberForms | 數字形式 | \u2150-\u218F |
Arrows | 箭頭 | \u2190-\u21FF |
MathematicalOperators | 數學運算符 | \u2200-\u22FF |
MiscellaneousTechnical | 零雜技術用符號 | \u2300-\u23FF |
ControlPictures | \u2400-\u243F | |
OpticalCharacterRecognition | \u2440-\u245F | |
EnclosedAlphanumerics | 帶括號的字母數字 | \u2460-\u24FF |
BoxDrawing | 製表符 | \u2500-\u257F |
BlockElements | 方塊圖形 | \u2580-\u259F |
GeometricShapes | 幾何圖形 | \u25A0-\u25FF |
MiscellaneousSymbols | 零雜丁貝符(示意符等) | \u2600-\u26FF |
Dingbats | \u2700-\u27BF | |
BraillePatterns | \u2800-\u28FF | |
CJKRadicalsSupplement | \u2E80-\u2EFF | |
KangxiRadicals | \u2F00-\u2FDF | |
IdeographicDescriptionCharacters | \u2FF0-\u2FFF | |
CJKSymbolsandPunctuation | CJK符號和標點 | \u3000-\u303F |
Hiragana | 平假名 | \u3040-\u309F |
Katakana | 片假名 | \u30A0-\u30FF |
Bopomofo | 注音 | \u3100-\u312F |
HangulCompatibilityJamo | \u3130-\u318F | |
Kanbun | \u3190-\u319F | |
BopomofoExtended | 擴展注音 | \u31A0-\u31BF |
EnclosedCJKLettersandMonths | 帶括號的CJK字母及月份 | \u3200-\u32FF |
CJKCompatibility | CJK兼容字符 | \u3300-\u33FF |
CJKUnifiedIdeographsExtensionA | CJK統一漢字擴展-A | \u3400-\u4dBF |
CJKUnifiedIdeographs | CJK統一漢字 | \u4E00-\u9fAF |
YiSyllables | \uA000-\uA48F | |
YiRadicals | \uA490-\uA4CF | |
HangulSyllables | \uAC00-\uD7A3 | |
HighSurrogates | \uD800-\uDB7F | |
HighPrivateUseSurrogates | \uDB80-\uDBFF | |
LowSurrogates | \uDC00-\uDFFF | |
PrivateUse | 專用區 | \uE000-\uF8FF |
CJKCompatibilityIdeographs | CJK兼容漢字 | \uF900-\uFAFF |
AlphabeticPresentationForms | \uFB00-\uFB4F | |
ArabicPresentationForms-A | \uFB50-\uFDFF | |
CombiningHalfMarks | \uFE20-\uFE2F | |
CJKCompatibilityForms | CJK兼容形式 | \uFE30-\uFE4F |
SmallFormVariants | 小寫變體 | \uFE50-\uFE6F |
ArabicPresentationForms-Bound | \uFE70-\ufeFF | |
Specials | \uFFF0-\uFFFF | |
HalfwidthandFullwidthForms | 半形及全形字符 | \uFF00-\uFFEF |
分類 | 全稱 | 說明 |
Cn | UNASSIGNED | |
Lu | UPPERCASE_LETTER | |
Ll | LOWERCASE_LETTER | |
Lt | TITLECASE_LETTER | |
Lm | MODIFIER_LETTER | |
Lo | OTHER_LETTER | |
Mn | NON_SPACING_MARK | |
Me | ENCLOSING_MARK | |
Mc | COMBINING_SPACING_MARK | |
Nd | DECIMAL_DIGIT_NUMBER | |
Nl | LETTER_NUMBER | |
No | OTHER_NUMBER | |
Zs | SPACE_SEPARATOR | |
Zl | LINE_SEPARATOR | |
Zp | PARAGRAPH_SEPARATOR | |
Cc | CNTRL | |
Cf | FORMAT | |
Co | PRIVATE_USE | |
Cs | SURROGATE | |
Pd | DASH_PUNCTUATION | |
Ps | START_PUNCTUATION | |
Pe | END_PUNCTUATION | |
Pc | CONNECTOR_PUNCTUATION | |
Po | OTHER_PUNCTUATION | |
Sm | MATH_SYMBOL | |
Sc | CURRENCY_SYMBOL | |
Sk | MODIFIER_SYMBOL | |
So | OTHER_SYMBOL | |
L | LETTER | |
M | MARK | |
N | NUMBER | |
Z | SEPARATOR | |
C | CONTROL | |
P | PUNCTUATION | |
S | SYMBOL | |
LD | LETTER_OR_DIGIT | |
L1 | Latin-1 | |
all | ALL | |
ASCII | ASCII | |
Alnum | 字母數字(0-9,a-z,A-Z) | |
Alpha | 字母(a-z,A-Z) | |
Blank | 空格和製表符(' '|\t) | |
Cntrl | 控制字符,不可打印 | |
Digit | 數字(0-9) | |
Graph | 可打印且可視字母(例如空格' '是可打印的但不是可視字母,而 `a' 兩者都是。) | |
Lower | 小寫字母 | |
可打印字母(非控制字符) | ||
Punct | 標符號(字母、數字、控制、空白符以外的字母),如:!@#$%}{<>,./?[]等等。 | |
Space | 空白符(' ',\t,0x09,0x0A,0x0B,0x0C,0x0D,0x20) | |
Upper | 大寫字母 | |
XDigit | 十六進制數字(0-9,a-f, A-F) |
替換表達式
特殊字符特殊字符介紹 | 描述 |
\n | 換行 |
\b | 向前刪除一個字符。當這個字符位於替換串之首時,將刪除匹配串之前的一個字符。若匹配串位於行首,將使匹配串所在行與前一行相合並。 |
\d | 向後刪除一個字符。當這個字符位於替換串之末時,將刪除匹配串之後的一個字符。若匹配串位於行末,將使匹配串所在行與下一行相合並。 |
\e | 插入一個ESC字符 |
\t | 插入一個TAB字符 |
\n | n代表查找正則表達式中的子表達式(組)。\1代表第一個子表達式,\2代表第二個子表達式,依次類推。\0代表整個匹配到的字符串。 |
\v | 大寫下一個字母 |
\U | 全部大寫以後的字母,直到碰到其它指示符爲止。 |
\l | 小寫下一個字母 |
\L | 全部小寫以後的字母,直到碰到其它指示符爲止。 |
\E | 取消所有的字母大小寫指示符。 |
自定義替換表
在查找/替換中使用自定義替換表
有的時候,上述簡單的自定義替換功能是不夠的。例如,用戶可能希望只把出現在括號內的源串替換爲目標串。這種文本處理可以通過在查找/替換中使用自定義替換表來解決。
在查找/替換功能中使用自定義替換表的替換函數是\Tn,其中n是0-9的數字, 注意n爲0表示第10張替換表。如果略去n,其效果相當於\T1,即使用第一張替換表。例如要把所有放在方括號中的漢字替換爲拼音,可以查找“\[(\E)\]”,替換爲“\T{\1}”。即把第一個子表達式的匹配內容按自定義替換錶轉換。注意,如果\T函數的參數不在替換表的源串中,\T函數的結果與源串相同,即不做任何變換。
有些情況下,用戶可能希望只使用替換表的一部分內容。還是以拼音爲例,前面給出的替換表中包含了拼音的音調,如果在替換時不希望加上這些音調數字,可以使用“過濾”功能。所謂過濾,其實是用一個正則表達式去分析替換表的目標串,並把其中的某個子表達式取出來。
使用“過濾”時,在“設置自定義替換表”對話框中,點“過濾”按鈕,在彈出的對話框中填入一個正則表達式。再以拼音爲例,表達式可以寫爲“(\p{Alpha}+)(\d)”,其中第一對括號中的是不含音調的拼音,第二對括號是音調。在調用\T函數時,JTextPro會在目標串中查找這個正則表達式。但是如何把其中的子表達式取出來呢?\T函數還有一個可選的下標,取第n個子表達式的值就寫作\T{...}[n]。所以,把放在方括號中的漢字替換爲不帶調的拼音,可以查找“\[(\E)\]”,替換爲“\T{\1}[1]”
匹配漢字:
Regex r= new Regex(@"[\u4e00-\u9fa5]+");
MatchCollection m=r.Match(yourstring);
-------------------------
如果需要使用正則表達式匹配Unicode字符的話...
這裏是幾個主要非英文語系字符範圍(google上找到的):
2E80~33FFh:中日韓符號區。收容康熙字典部首、中日韓輔助部首、注音符號、日本假名、韓文音符,中日韓的符號、標點、帶圈或帶括符文數字、月份,以及日本的假名組合、單位、年號、月份、日期、時間等。
3400~4DFFh:中日韓認同表意文字擴充A區,總計收容6,582箇中日韓漢字。
4E00~9FFFh:中日韓認同表意文字區,總計收容20,902箇中日韓漢字。
A000~A4FFh:彝族文字區,收容中國南方彝族文字和字根。
AC00~D7FFh:韓文拼音組合字區,收容以韓文音符拼成的文字。
F900~FAFFh:中日韓兼容表意文字區,總計收容302箇中日韓漢字。
FB00~FFFDh:文字表現形式區,收容組合拉丁文字、希伯來文、阿拉伯文、中日韓直式標點、小符號、半角符號、全角符號等。
比如需要匹配所有中日韓非符號字符,那麼正則表達式應該是^[\u3400-\u9FFF]+$
理論上沒錯, 可是我到msn.co.ko隨便複製了個韓文下來, 發現根本不對, 詭異
再到msn.co.jp複製了個'お', 也不得行..
然後把範圍擴大到^[\u2E80-\u9FFF]+$, 這樣倒是都通過了, 這個應該就是匹配中日韓文字的正則表達式了, 包括我們臺灣省還在盲目使用的繁體中文
而關於中文的正則表達式, 應該是^[\u4E00-\u9FFF]+$, 和論壇裏常被人提起的^[\u4E00-\u9FA5]+$很接近
需要注意的是論壇裏說的^[\u4E00-\u9FA5]+$這是專門用於匹配簡體中文的正則表達式, 實際上繁體字也在裏面, 我用測試器測試了下'中華人民共和國', 也通過了, 當然, ^[\u4E00-\u9FFF]+$也是一樣的結果
源自:http://x.discuz.net/180642/viewspace-19070