2013-12-09 180 views
2

我在這裏有一個困境。我正在嘗試編寫一個正則表達式來匹配東部語言以及西方語言的所有字母字符。其中一個標準是沒有數字可以匹配(所以José13)不是匹配,但是(José)是,另一個標準是特殊字符不匹配(即:!@#$%等)如何匹配Unicode特殊字符而不匹配特殊字符

I'已經與這在Chrome的控制檯打過來,我已經得到了:

"a".match('[a-zA-z]'); 

回來的成功,當我把在:

"a".match('[\p{L}]'); 

我得到一個空響應,我不是完全理解爲什麼。根據http://www.regular-expressions.info/unicode.html \ p {L}是任何字母的匹配項。

編輯:\ p似乎不能在我的Chrome控制檯中工作,所以我會嘗試不同的路線。我有Unifoundry unicode的圖表。我將匹配正則表達式並嘗試使字符範圍無效。

任何輸入將不勝感激。

+0

你是什麼意思的「字母字符」和「東方語言」嗎?這種方法不會像@icchthedral的評論那樣工作,所以你需要定義你想要包含什麼。 –

+0

我的意思是所有語言的所有非數字,非數學,非標點符號。我不希望有人能夠進入ResourceReaper,但不需要ResourceReaper或RésourceRéaper,但不能使用RésourceRéaper12或RésourceRéaper#。 – ResourceReaper

回答

1

這個工程在JavaScript控制檯,但它似乎是一個黑客:

.match('^[^\u0000-\u0040\u005B-\u0060\u007B-\u00BF\u00D7\u00F7]*'); 

然而,它做我需要它做的。

引用的SO這個帖子:Javascript + Unicode regexes

+0

不幸的是,由於JavaScript的Regex和字符串庫很弱,如果有人編寫更強大的庫,這是最好的辦法。 – Jacob

0

當前JavaScript實現不支持這樣的快捷方式,但你可以指定一個範圍,例如:

/[\u4E00-\u9FFF]+/g.test("漢字")