0

我在正则表达式中遇到困难。

要求是任意数量字符的正则表达式,不受限制,但应该只允许12数字 {digits}。

请帮忙,谢谢。

4

4 回答 4

1

我认为这个正则表达式可以解决问题:

/^(.*?[\d].*?){12}$/

您正在对数字两侧的任意数量的字符进行不贪婪的匹配。该子模式必须出现 12 次。

于 2013-10-25T23:21:47.443 回答
1

为什么不这样:

var s = '12345aaaaaaaaaaaaaaaaabc444';

var maxDigits = 12,
    len = s.length,
    numDigits = 0,
    newLen;


if (len > maxDigits) {
    newLen = s.replace(/[0-9]/g, '').length;
    numDigits = len - newLen;
}

if (numDigits > maxDigits) {
    //error
}
于 2013-10-25T23:06:05.690 回答
0
[0-9]{12}

试试这个...这将为您提供 12 位数字。12,只有 12。

现在您需要添加任何字符而不是数字,需要帮助吗?

于 2013-10-25T23:02:51.180 回答
0

匹配字符串中的 3 位数字的示例:

/^(([^\d]*\d[^\d]*){3})$/.test('asd1a2a4a') // -> (3 digits) true
/^(([^\d]*\d[^\d]*){3})$/.test('asd1a2a44a') // -> (4digits) false
于 2013-10-25T23:18:01.230 回答