2015-05-13 47 views
3

我正在尋求實施此answer中提供的解決方案,但它不起作用。在此jsFiddle的代碼有看起來像這樣:用於變音符號的正則表達式

function Start() { 

    $('#TheBox').keyup(function() { 

     var TheInput = $('#TheBox').val();  
     var TheCleanInput = TheInput.replace(/([.\p{L}])/g, ''); 

     $('#TheBox').val(TheCleanInput); 
    }); 
} 

$(Start); 

基本上,我在找允許字母如éè輸出,以及數字。我需要改變什麼來使正則表達式過濾器工作?

謝謝。

+4

Javascript正則表達式沒有unicode字符類。所以你可以忘記'\ p {L}'。您始終可以使用明確的重要字符列表構建一個字符類。 –

+1

查看http://stackoverflow.com/questions/17357716/javascript-regex-unicode-diacritic-combining-characters – James

+0

@James:我看到了,但沒有提供答案。我看着這個問題,但我還沒有能夠使其工作:http://stackoverflow.com/questions/19001140/amend-regular-expression-to-allow-german-umlauts-french-accents-and-其他有效 – frenchie

回答

11

正如Casimir et Hippolyte在評論中所述,Javascript不支持\p{L} unicode字符類。

您可以創建自己的人物等級:

[a-zA-Z0-9À-ž] 

Demo

如果要允許那些字符,但這些範圍之外的替換字符,否定字符類:

[^a-zA-Z0-9À-ž] 

Demo

+0

我可能在這裏丟失了一些明顯的東西:http://jsfiddle.net/cv1o0ywc/1/你可以看看它嗎? – frenchie

+0

你想用'a bè'替換一些沒有字母或其他字母的字母嗎?你可以否定它:'[^ a-zA-Z0-9À-ž]' – dawg

+0

好吧,這真的很棒!我已經更新了這個jsfiddle:http://jsfiddle.net/cv1o0ywc/2/(增加空間和短劃線),它的工作原理。我去http://french.typeit.org/通過將diatrics複製到小提琴來測試它,一切似乎都很好。感謝你的回答! – frenchie

3

[À-ž]字符類包含以下字符,在下面用黃色突出顯示。

enter image description here