代码之家  ›  专栏  ›  技术社区  ›  rebelliard

仅允许特定字符集的正则表达式

  •  2
  • rebelliard  · 技术社区  · 14 年前

    我想要一些帮助来创建一个正则表达式来解析文本框上的字符串。我目前有两种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 只接受以下字符集的regex:

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

    这可能很简单,但我几乎没有regex技能。事先谢谢。

    4 回复  |  直到 14 年前
        1
  •  5
  •   user113716    14 年前

    只需把这些字符加进去。

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

    您可能需要对一些非标准字母使用十六进制转义序列(\x)或Unicode转义序列(\u),但这将给您一个良好的开端。或者,稍微简化一下:

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

    如果我已经正确理解了您的需求,那么您只需要允许列出的字符,并且您希望删除其余的所有字符。如果是这种情况,您可以简单地将char类扩展为:

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

    你试过:[^a-z a-z 0-9;,.