正则表达式,仅允许一组特定字符

时间:2010-09-15 13:10:17

标签: javascript jquery regex replace

我想帮助创建一个正则表达式来解析文本框中的字符串。我目前有这两种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
  • áéíóúü
  • ÁÉÍÓÚÜ
  • ñÑ
  • ;,.
  • ()
  • - +

这可能很简单,但我几乎没有正则表达式技能。提前谢谢。

4 个答案:

答案 0 :(得分:5)

只需添加这些字符。

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

答案 1 :(得分:0)

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

对于某些非标准字母,您可能必须使用十六进制转义序列(\ x ##)或unicode转义序列(\ u ####),但这将为您提供良好的开端。或者,略微简化:

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

答案 2 :(得分:0)

如果我已正确理解您的要求,您只想允许列出的字符,并且您要删除所有字符。如果是这种情况,您只需将char类扩展为:

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

答案 3 :(得分:0)

您是否尝试过:[^ a-zA-Z 0-9;,。áéíóúüÁÉÍÓÚÜñÑ()]