首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在每个3位数字后添加逗号?

如何在每个3位数字后添加逗号?
EN

Stack Overflow用户
提问于 2018-06-26 22:03:29
回答 6查看 2.6K关注 0票数 2

这是我的代码的简化:

代码语言:javascript
复制
$("#annual_sales").on('keyup', function () {
    $(this).val( $(this).val().replace(/(\d{3})/g, "$1,") );
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="annual_sales" type="text" />

我试着在每3位数字后加一个逗号。

,但正如您所看到的(在上面的代码片段中),它在JS中不起作用。知道出什么问题了吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-06-26 22:11:17

在您当前的pattern (\d{3})中,您可以在匹配3个数字之后添加一个逗号,并且当3个数字后面已经有一个逗号时也是如此。

您可能要做的是使用负lookahead (?!,)匹配3位数字,以断言以下内容不是逗号:

(\d{3}(?!,))

代码语言:javascript
复制
$("#annual_sales").on('keyup', function() {
  $(this).val($(this).val().replace(/(\d{3}(?!,))/g, "$1,"));
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="annual_sales" type="text" />

如果您不想让逗号出现在行尾,您可以在否定的先行检查中使用替代,它断言后面的内容既不是逗号,也不是行尾(\d{3}(?!,|$))

代码语言:javascript
复制
$("#annual_sales").on('keyup', function() {
  $(this).val($(this).val().replace(/(\d{3}(?!,|$))/g, "$1,"));
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="annual_sales" type="text" />

票数 1
EN

Stack Overflow用户

发布于 2018-06-26 22:05:58

这里不起作用,因为事件会多次触发,然后你需要在每次事件触发时删除之前添加的第一个逗号,并在所需的位置添加新的逗号:

代码语言:javascript
复制
$(this).val().replace(/,/g,'').replace(/(\d{3})/g, "$1,")

**注意:**我建议使用input事件,因为它在跟踪使用输入时更有效,而且您可以调整正则表达式,以便不会在行尾添加逗号:

代码语言:javascript
复制
/(\d{3}(?!$))/g

代码语言:javascript
复制
$("#annual_sales").on('input', function() {
  $(this).val($(this).val().replace(/,/g, '').replace(/(\d{3}(?!$))/g, "$1,"));
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="annual_sales" type="text" />

票数 2
EN

Stack Overflow用户

发布于 2018-06-26 22:12:06

您需要将之前添加的",“从预先的值中去掉,如下所示。

代码语言:javascript
复制
$("#annual_sales").on('keyup', function () {
    $(this).val($(this).val().replace(new RegExp(",", "g"), ""));
    $(this).val( $(this).val().replace(/(\d{3})/g, "$1,") );
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="annual_sales" type="text" />

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51044838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档