【问题标题】:Regex to allow numbers, plus symbol, minus symbol and brackets正则表达式允许数字、加号、减号和括号
【发布时间】:2021-10-09 02:34:34
【问题描述】:

我正在尝试创建一个只允许以下 0-9、加号、减号和方括号 () 的正则表达式。对上述每一个的长度没有限制。到目前为止,我有这个,但它似乎不起作用。

/^[0-9 -+]+$/

【问题讨论】:

  • regex101.com/r/sN6lT1/1 确实有效,我只是加了括号。
  • 当您说“仅允许”时,您的实际意思是,它匹配字符串的一部分还是整个字符串?是否有任何字符必须出现的顺序或每个字符允许出现多少个?你实际上想用这个正则表达式实现什么?
  • 字符串的任何部分都应该允许有上面提到的内容,在开头,中间或结尾。

标签: javascript regex


【解决方案1】:

连字符- 必须在字符列表的末尾,否则表示间隔。

/^[0-9 ()+-]+$/

0-9 可以写成\d

/^[\d ()+-]+$/

【讨论】:

    【解决方案2】:

    这应该适合你:

    ^[\d\(\)\-+]+$
    

    ^ -> 字符串开头

    \d -> 与 [0-9] 相同

    + -> 一次或多次重复

    $ -> 字符串结束

    DEMO

    var re = /^[\d\(\)\-+]+$/m; 
    var str = ['09+()1213+-','fa(-ds'];
    var m;
    var result = "";
     
    for(var i = 0; i < str.length; i++) {
        if ((m = re.exec(str[i])) !== null) {
            if (m.index === re.lastIndex) {
                re.lastIndex++;
            }
            // View your result using the m-variable.
            // eg m[0] etc.
     
        }
      result += "\""+str[i]+  "\"" + " is matched:" + (m != null) + "</br>";
    }
    
    document.getElementById("results").innerHTML = result
    &lt;div id="results"&gt;&lt;/div&gt;

    【讨论】:

      【解决方案3】:

      要匹配数字、+、-、(和),请使用:

      [+()\d-]+
      

      诀窍是字符在字符类中的位置。


      if (/^[+()\d-]+$/.test(text)) {
      
      } else {
      
      }
      

      【讨论】:

        【解决方案4】:
        [\d\(\)\+\-\(\)]
        

        应该可以的。

        编辑:但是由于有些人同意转义太多,所以你去吧:

        [\d+()-]
        

        【讨论】:

        • 为什么要逃得这么重?锚点和量词在哪里?
        • 因为它可以匹配每个字符。这将捕获所有内容。
        • 谁对这个投了反对票……哈哈。这是一个有效的答案。当然它可以在没有转义的情况下完成,但为什么要否决一个有效的答案呢?毫无意义,为什么它应该被否决。
        • 我没有。在某些情况下,这可能是一个可行的答案,是的。
        • “在某些情况下”? i.imgur.com/66E3v2T.png - 在 Javascript 中可以正常工作,这是肯定的。
        【解决方案5】:

        var re = /^[\w\(\)\-\!\+\*\&\%\$#\@\[\]\{\}\<\>\s]+$/m; 
        var str = ['09+()1213+-[#test@gmail{}<>','fa(-ds'];
        var m;
        var result = "";
         
        for(var i = 0; i < str.length; i++) {
            if ((m = re.exec(str[i])) !== null) {
                if (m.index === re.lastIndex) {
                    re.lastIndex++;
                }
                // View your result using the m-variable.
                // eg m[0] etc.
         
            }
          result += "\""+str[i]+  "\"" + " is matched:" + (m != null) + "</br>";
        }
        
        document.getElementById("results").innerHTML = result
        &lt;div id="results"&gt;&lt;/div&gt;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-19
          • 1970-01-01
          • 1970-01-01
          • 2020-10-29
          相关资源
          最近更新 更多