【问题标题】:Regular expression for allowing only a certain set of characters仅允许特定字符集的正则表达式
【发布时间】:2011-04-12 16:27:32
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery regex replace


    【解决方案1】:

    只需添加这些字符。

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

    【讨论】:

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

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

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

      【讨论】:

      • 我想你想在字符类中使用^。此外,\w 将匹配列表中未指定的下划线字符。
      • \w 包含\d。另外,您忘记了+ 和-。另外,无需逃避().。
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2015-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-02
          • 1970-01-01
          • 1970-01-01
          • 2017-08-15
          相关资源
          最近更新 更多