0

我有一个文本框,我希望用户在其中提供多个手机号码,每个号码应该只有 10 位数字,并且应该用逗号分隔。除了逗号之外,任何特殊字符都不应被允许甚至空格。

4

6 回答 6

5

我假设您可以弄清楚如何从文本框中获取值。

这是一个将进行数字验证的正则表达式:

/^(\d{10}(,\d{10})*)?$/

这将允许该字段为空白,但如果输入内容,则必须是一个或多个用逗号分隔的 10 位数字。

于 2012-11-27T08:44:54.113 回答
1

与其为整个事物找到一个正则表达式,您可以将其拆分并为每个段测试一个表达式,丢弃坏的表达式并将事物重新缝合在一起。这样你理论上可以匹配数百个电话号码:)

var numbers = 'aaa,456,789'.split(',').filter(function(item) {
    return /^\d{10}$/.test(item)
});

if (numbers.length > 2) {
    // too many numbers?
} else if (!numbers.length) {
    // no numbers?
}

// this will give you back a comma separated list in a string
// numbers.join(',')

请注意,这Array.filter()可能不适用于所有邪恶的浏览器,因此您必须为此找到合适的替代方案

于 2012-11-27T08:48:07.853 回答
0

你可以这样做

/^\d{10}(,\d{10})*$/

\d{10}匹配 10 位数字

(,\d{10})*匹配,和 10 位数字 0 到多次

于 2012-11-27T08:42:07.243 回答
0

与其他人类似,但无需重复该\d{10}部分

^(?:\d{10},?\b)+$
于 2012-11-27T09:01:40.907 回答
0

您的电话号码的验证功能。如果该字段为空,则验证为真。

function validateNumbers( text ) {
    var numbers = text.split(",");

    for( var i = 0, len = numbers.length; i < len; i++ ) {
         if( !/^\d{10}$/.test( numbers[i] ) ) {
             return false;
         }
    }
    return true;
}
于 2012-11-27T09:14:34.473 回答
0

使用以下正则表达式模式之一:

  • /^(\d{10}(,(?=.))?)+$/

  • /^(\d{10}(,(?=.)|$))+/

  • /^(\d{10}(,(?=.)|))+$/

  • /^\d{10}(,\d{10})*$/

于 2012-11-27T09:53:59.663 回答