2010-09-15 77 views
2

我想創建一個正則表達式來解析文本框上的字符串。我現在有這兩種JavaScript方法:只允許一組字符的正則表達式

function removeIllegalCharacters(word) { 
    return word.replace(/[^a-zA-Z 0-9,.]/g, ''); 
} 

$("#comment").keyup(function() { 
this.value = removeIllegalCharacters(this.value); 
}); 

我想取代我/[^a-zA-Z 0-9,.]/g正則表達式爲一個只接受以下字符集:

  • a-z
  • A-Z
  • 0-9
  • áéíóúü
  • ÁÉÍÓÚÜ
  • ñÑ
  • ;,.
  • ()
  • - +

它可能很簡單,但我已經接近無正則表達式的技能。提前致謝。

回答

5

就在添加這些字符

function removeIllegalCharacters(word) { 
    return word.replace(/[^a-zA-Z 0-9,.áéíóúüÁÉÍÓÚÜñÑ();+-]/g, ''); 
} 
0
return word.replace(/[^a-zA-Z0-9áéíóúüÁÉÍÓÚÜñÑ\(\);,\.]/g, ''); 

您可能需要使用十六進制轉義序列(\ X ##)或Unicode轉義序列(\ u ####格式)的一些非標字母,但會給你一個良好的開端。或者,稍作簡化:

return word.replace(/[^\w\dáéíóúüÁÉÍÓÚÜñÑ\(\);,\.]/g, ''); 
+2

我想你想在字符類裏面有'^'。另外,'\ w'將匹配列表中未指定的下劃線字符。 – 2010-09-15 13:18:21

+4

'\ w'包含'\ d'。另外,你忘了'+'和'-'。另外,不需要轉義'().'。 – 2010-09-15 13:19:00

0

如果我理解正確的話你的要求,你要只允許上市焦炭和要刪除其餘全部字符。如果是這樣的話,你可以簡單地擴展您的字符類如:

function removeIllegalCharacters(word) { 
    return word.replace(/[^a-zA-Z0-9áéíóúüÁÉÍÓÚÜñÑ;,.()]/g, ''); 
} 
0

你有沒有嘗試:[^ A-ZA-Z 0-9; ,.áéíóúüÁÉÓÚÜñÑ()]

相關問題