使用正则表达式在至少一个数字后允许逗号

时间:2017-05-26 12:33:20

标签: javascript regex validation

我需要一个正则表达式,允许逗号后面的数字。我试过但是在数字之后它允许使用逗号122,,,

我想:
12,323,232,2,232 1,1,1,1,1 123123,23231,2322
我不想要:
12312,,,123,,2,32, 12312,123,12,,,,,123,12

我的代码是

$(".experience").keyup(function (e) { 
    this.value = this.value.replace(/[^0-9\{0,9}]/g,''); 
});

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您希望删除任何不在数字后面的逗号,并且删除除数字或逗号以外的任何字符。如果你的语言支持lookbehinds,这是相当简单的,但是在javascript中也不是那么难。您可以使用以下正则表达式匹配任何不正确的逗号,然后将其替换为$1

/^,+|(,)+|[^0-9,]+/g

替换为:$1

  • 开头的任何逗号都应替换为空字符串''
  • 任何连续的逗号,即,+,它们应替换为单个逗号,,
  • 除数字或逗号以外的任何字符都应替换为空字符串''

要合并这两个规则,^,+|(,)+将有助于匹配这两个规则,并且替换$1对应于捕获组1,它将仅出现在第二个条件中,因此它将用一个替换多个逗号逗号即(,)+已替换为(,)。在第一个替代^,+中,在起始处匹配逗号,而第一个捕获组保持为空,因此它将替换为空字符串''

这是一个js演示:

$(function() {
   $(".experience").keyup(function (e) {
       this.value = this.value.replace(/^,+|(,)+|[^0-9,]+/g,'$1');
	});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class='experience' name="experience" value=""/>

您可以考虑将keyup改为focusout,尽管这取决于您! :)

Regex101 Demo

答案 1 :(得分:0)

这是你要找的吗?我不习惯使用正则表达式,但设法快速将它们放在一起:

^([0-9]+\,?)*$

The questionmark is makes the comma optional.
[0-9] = numeric values only
+     = quantifier between 1 and unlimited
\     = escapes the character, so it's a constant
*     = quantifier between 0 and unlimited times

希望这有帮助!

此致