输入模式regexp验证,JS添加逗号,允许用户添加逗号并验证它

时间:2015-05-23 09:47:05

标签: javascript regex html5 validation backbone.js

我搜索了很多,我几乎可以完成所有任务,但是所有的一起...... 所以,我输入了type =" text"

<input type="text" pattern="^[1-9]|^[-,0-9]{2,18}$" class="form-control commas-decimal-points" id="tot-uniques-display-<%%= model.adPartnerId %>" placeholder="eg. 100,000,000" name='network_data[display][total_monthly_uniques]' value="<%%= model.display.total_monthly_uniques  %>"/>

pattern="^[1-9]|^[-,0-9]{2,18}$"

此模式仅验证数字,不超过14位,不允许从&#34; 0&#34;开始。

我必须允许用户输入数字,必须从数字&gt;开始0并且不超过14个数字,用户可以在特殊地方输入逗号 OR 如果用户只输入数字我必须通过JS添加逗号。如果用户自己输入逗号,我必须根据模式进行验证。

1
10
100
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
10,000,000,000
100,000,000,000
1,000,000,000,000
10,000,000,000,000

我在骨干视图中有这样的功能:

inputEventOnInput: function (e) {
    var me = this;

    // skip for arrow keys
    if(event.which >= 37 && event.which <= 40) return;

    // format number
    me.$el.find(':input[type="text"]').val(function(index, value) {
      return value
        .replace(/\D/g, "")
        .replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    });

  },

它触发&#34;输入&#34;事件并在用户仅输入数字时添加逗号。 如果用户输入10000000,它将被10,000,000输入替换。

如何定义使用输入逗号,然后根据模式验证此逗号,并在错误的逗号上触发HTML5:无效事件?

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容验证逗号是否符合模式:

^([1-9]\d{0,2}(,\d{3}){0,3})$|^([1-9]\d?(,\d{3}){4})$

请参阅DEMO

您可以使用此Code on JSFiddle来处理所有三种情况。