【问题标题】:javascript regex to allow numbers and specific special characterjavascript正则表达式允许数字和特定的特殊字符
【发布时间】:2018-03-05 15:19:51
【问题描述】:

我正在尝试使用正则表达式来仅检查数字和逗号,例如

这将通过

1
0,3,4
1,3
1,3,15,12

这不会通过

abc
1,,3,,4
1,3,
,1,1

我当前的正则表达式是

/[0-9]*[,][0-9]*/

它似乎不像我想要的那样工作 我能得到一些帮助吗谢谢

【问题讨论】:

  • 你想要的输出是什么?

标签: javascript regex


【解决方案1】:

您可以像这样使用正则表达式:

^\d+(,\d+)*$

Working demo

【讨论】:

  • 最后忘了*吗?这将匹配 1,22 而不是 1,2,3。
  • @Onyambu 据我了解价值 1,22 是正确的匹配
  • 您已对其进行了编辑。在此版本之前,正则表达式无法匹配 1,2,3..但现在它可以匹配,因为 *
【解决方案2】:

使用这个正则表达式^([0-9]+,)*[0-9]+$

var re = new RegExp('^([0-9]+,)*[0-9]+$');
function check(){
    var str=$('#hi').val();
    console.log(str);
    if(str.match(re))
    $('#result').html("Correct");
    else
    $('#result').html("InCorrect");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="hi">
<button onclick="check()">Check</button>
<p id="result"></p>

【讨论】:

  • 非常感谢
  • 很高兴能帮上忙。 @龙骑士
【解决方案3】:

正则表达式^\d+(?:,\d+)*$

var array = ['1', '0,3,4', 'abc', '1,,3,,4', '1,3,', ',1,1'];

for (var i of array) {
  console.log(i + ' => ' + /^\d+(?:,\d+)*$/g.test(i))
}

【讨论】:

    【解决方案4】:

    这不是正则表达式,但这是一种方法:

    // Your test input values (which I will assume are strings for this code):
    /*
     * 1
     * 0,3,4
     * 1,3
     * 1,3,15,12
     */
     
     const str = '1,3,15,12';
     const isValid = str.split(',')
       .map((val) => !isNaN(parseInt(val)))
       .reduce((currentVal, nextVal) => currentVal && nextVal, true);
       
     console.log(isValid);

    【讨论】:

      【解决方案5】:

      您当前的正则表达式:/[0-9]*[,][0-9]*/ 将匹配 ,

      1,1

      ,6

      4953,5433

      5930,

      等等

      假设您要匹配一个逗号分隔的数字列表(每个数字都有任意位数), 你需要: /\d+(,\d+)*/ 其中\d[0-9] 的简写:

      /[0-9]+(,[0-9]+)*/

      【讨论】:

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