【问题标题】:Regular expression to allow comma and space delimited number list允许逗号和空格分隔的数字列表的正则表达式
【发布时间】:2013-07-02 14:16:06
【问题描述】:

我想使用 javascript 或 jquery 编写一个正则表达式以允许 逗号分隔的数字列表或 空格分隔的数字或 逗号后跟空格分隔的数字或 任何上述前的组合 任何不是数字、空格或逗号的东西都必须被拒绝

应该通过 111,222,333 111 222 333 111、222、333 111,222,333 444 555 666, 111, 222, 333,

不应通过: 111,222,3a 3a 111 222 3a 等等等等

我尝试了下面的代码,但是当我输入时它们似乎可以工作 3a 作为一个数字,它通过了!!!如何?我无法理解我的代码是如何让这封信通过的。

我想拒绝任何不是空格、逗号或数字的东西

或者没有正则表达式有更好的方法吗? google了一下,没有找到答案。

提前感谢您的帮助。

var isNumeric = /[\d]+([\s]?[,]?[\d])*/.test(userInput);
var isNumeric = /^[\d\s,]*/.test(userInput);    
var isNumeric = /^[\d]*[\s,]*/.test(userInput); 
var isNumeric = /^[\d\s,]*/.test(userInput);    
var isNumeric = /\d+\s*,*/.test(userInput); 

if (isNumeric == false) {
    alert(isNumeric);
  return false;
}
else
      alert('is Numeric!!!');

【问题讨论】:

  • [\d] 与没有[]\d 完全相同
  • 另外,您的问题的答案是您在正则表达式的末尾省略了$,这意味着匹配的模式后面可以跟任何后续字符。
  • 您上面的测试用例只会测试最终的正则表达式。

标签: javascript jquery regex numbers delimited


【解决方案1】:

Would 正则表达式 ^[\d,\s]+$ 不做这个伎俩?

【讨论】:

  • 您需要一个* 或一个+,并且可能不需要多个逗号顺序
  • 是的,刚刚测试了一下,得出了同样的结论。
  • 但我测试了 /^[\d\s,]*/ 并且它仍然允许 3a,因为它看到 3。它没有拒绝 3a。太奇怪了。
  • @javafun 不,该正则表达式将不匹配“3a”。您仍然忘记了模式末尾的$
  • 谢谢你,你是对的,它似乎正在工作。让我测试一下,然后回复你。谢谢大家的快速回复。
【解决方案2】:

试试这个正则表达式...Click to view your demo

^[0-9 _ ,]*$

【讨论】:

    【解决方案3】:

    ^(\d+[, ]+)*$应该这样做。

    说明: 一组包含一个或多个数字,后跟至少一个空格或逗号。组可以重复任意次数。

    它并不能处理所有事情,例如当逗号之间没有数字时失败(如果这是你想要的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      相关资源
      最近更新 更多