0

我从输入框中输入了 23 位数字键,该键将用“-”分隔。

例如:XXXXX-XXXXX-XXXXX-XXXXX

这是预期的格式,5 位数字后跟 -(连字符)。

问题:用户可以输入任何数据/错误格式,例如 XXX-XXXXX-XXXXX-XXXXXXX,在这种情况下连字符的索引无效。如何验证连字符的索引?

我试过:

  if((prd_len==23) && (n!=-1))
  {
       var indices = [];
        for(var i=0; i<prd_id.length;i++) 
        {
           if (prd_id[i] === "-")
               { 
                   indices.push(i); 
               }
        }

        for(var x=0;x<indices.length;x++)
        {
           if((indices[x]!=5) || (indices[x]!=11) || (indices[x]!=17))
           {
             $('#msgErr1').text('Please enter valid key.');
             flag=1;
           }
        }
 }

其中prd_len=用户接受输入的长度。

4

2 回答 2

4

试试正则表达式

if(input.match(/^(\d{5}-){3}\d{5}$/))
    everything is OK

这个表达式基本上读作“五位数字和一个破折号 - 三倍,然后是五位数字”。如需进一步参考,请参阅

于 2013-08-01T10:36:29.840 回答
2

如前所述thg435,但更具人类可读性:-)

var correct = input.match(/^\d\d\d\d\d-\d\d\d\d\d-\d\d\d\d\d-\d\d\d\d\d$)
于 2013-08-01T10:38:21.627 回答