2009-12-31 50 views
5

是否可以在JavaScript的正則表達式中使用俄文字符?
也許使用\ p {Cyrillic}?JavaScript中的正則表達式與西里爾文(俄語)設置

如果是,請提供使用的基本示例。

的例子:

var str1 = "абв прв фву"; 
var regexp = new RegExp("[вф]\\b", "g"); 

alert(str1.replace(regexp, "X")); 

我期望能獲得:абXпрX

回答

6

它應該工作,如果你只是保存JavaScript文件中UTF8。那麼你應該可以輸入字符串中的任何字符。

編輯: 剛剛作出了一個簡單的例子來自維基百科的一些cryllic字符:

var cryllic = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяабвгдеёжзийклмнопрстуфхцчшщъыьэюя'; 
cryllic.match('л.+а')[0]; 
// returns as expected: "лмнопрстуфхцчшщъыьэюяа" 
+0

但如果我試試這個:var str1 =「абв」; var regexp = new RegExp(「[бв] \ b」,「g」); alert(str1.replace(regexp,「е」));它不起作用。 – samuel 2009-12-31 17:18:45

+0

你的文件是100%UTF-8編碼的嗎?你可以嘗試一個字符嗎? – 2009-12-31 18:01:26

+3

似乎字邊界'\ b'工作不正常。如果我刪除它,它會正常工作,所以請嘗試用'[]'或類似的東西替換它。 – poke 2009-12-31 18:08:44

1

根據this

的JavaScript,它不會通過提供任何 Unicode支持其RegExp 類,支持\ uFFFF爲 ,匹配單個Unicode代碼點 作爲par t的字符串語法。

所以你至少可以使用代碼點,但看起來沒有什麼更多(沒有類)。

也檢查出this duplicate你的問題。

+0

該網站不正確。 JavaScript在正則表達式中支持Unicode。 – 2009-12-31 17:54:59

+0

正如我在上面引用的,我找不到比單個代碼點更多的參考資料,請參閱http://www.w3schools.com/jsref/jsref_obj_regexp.asp你有源嗎? – 2009-12-31 18:03:38

6

這是一篇關於JavaScript regular expressions and unicode的好文章。 JavaScript中的字符串是16位,因此字符串和RegExp對象可以包含Unicode字符,但大多數特殊字符(如'\ b','\ d','\ w')僅支持ascii。所以你的正則表達式不能按預期工作,因爲使用'\ b'。看起來你必須找到一種不同的方式來檢測字邊界。