【问题标题】:Regular expression for validating with specific characters through javascript用于通过 javascript 验证特定字符的正则表达式
【发布时间】:2014-07-31 04:15:36
【问题描述】:

我想验证一个不允许以下字符的字符串。

<,>,:,","/,\,|,?,*,#

我想通过 JavaScript 验证这一点。 我正在尝试使用以下代码。

var reg = /[^a-zA-Z0-9 \-_]+/;
reg.test(filename[0])

但这无法验证符号#

请帮忙。

【问题讨论】:

    标签: javascript asp.net c#-4.0


    【解决方案1】:

    您遇到的问题是您在模式中间包含了连字符而没有转义它。这告诉引擎你期待一个范围——在这种情况下,空格通过下划线。 (在我看来)将连字符作为模式中的第一个或最后一个字符更容易,此时您不必转义它。 (如果您使用的是否定字符类,它将是第二个字符。)

    例如

    var reg = /[^a-zA-Z0-9 \-_]+/;
    

    --或--

    var reg = /[^a-zA-Z0-9 _-]+/;
    

    --或--

    var reg = /[^-a-zA-Z0-9 _]+/;
    

    【讨论】:

      【解决方案2】:

      您是否只想允许英文字母 a-z(和 A-Z)、数字、空格、“_”和“-”?如果是这样,这与禁止您指定的字符不同,因为 '☃' 没有您提供的字符,但在您的用例中可能不是有效的字符串。

      如果你只想要英文字母、数字、空格、'_'和'-',你可以使用下面的RegExp和条件:

      var reg = /^[a-zA-Z0-9 \-_]+$/; 
      if (reg.test(filename[0])) {
        // String is ok
      }
      

      这表示字符串中开头 (^) 和结尾 ($) 之间的所有内容都必须是一个或多个允许的字符。

      如果您想禁止您在问题中提供的字符,您可以使用:

      var reg = /[\<\>\:\,\/\\\|\?\*\#]/; 
      if (!reg.test(filename[0])) {
        // String is ok
      } 
      

      这表示搜索您列出的任何字符(它们都在它们之前用\ 转义),如果找到任何字符,则该字符串无效。因此,只有在测试失败的情况下,字符串才是有效的字符串 - 这就是为什么在测试之前会有 !

      【讨论】:

        【解决方案3】:
        string  sourceString ="something" ;
        var outString = sourceString.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-08
          • 1970-01-01
          • 2016-11-15
          • 2014-12-03
          • 1970-01-01
          • 2016-10-28
          • 1970-01-01
          • 2015-01-05
          相关资源
          最近更新 更多