我在正则表达式中遇到困难。
要求是任意数量字符的正则表达式,不受限制,但应该只允许12
数字 {digits}。
请帮忙,谢谢。
我认为这个正则表达式可以解决问题:
/^(.*?[\d].*?){12}$/
您正在对数字两侧的任意数量的字符进行不贪婪的匹配。该子模式必须出现 12 次。
为什么不这样:
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
}
[0-9]{12}
试试这个...这将为您提供 12 位数字。12,只有 12。
现在您需要添加任何字符而不是数字,需要帮助吗?
匹配字符串中的 3 位数字的示例:
/^(([^\d]*\d[^\d]*){3})$/.test('asd1a2a4a') // -> (3 digits) true
/^(([^\d]*\d[^\d]*){3})$/.test('asd1a2a44a') // -> (4digits) false