我需要一个正则表达式,允许逗号后面的数字。我试过但是在数字之后它允许使用逗号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,'');
});
答案 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
,尽管这取决于您! :)
答案 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
希望这有帮助!
此致