Regex 正则表达式-字符串包含的数字不应超过7位

Regex 正则表达式-字符串包含的数字不应超过7位,regex,regex-negation,Regex,Regex Negation,字符串的规则: 可以包含0-7个数字 测试用例: abcd1234ghi567⟶ 真值 1234567abc⟶ 真值 ab1234cd567⟶ 真值 abc12⟶ 真值 abc12345678⟶ 错误 我怎样才能得到一个正则表达式呢 我面临的问题是-如何保持整个字符串中的数字计数。数字可以出现在字符串中的任何位置 我想要一个纯正则表达式解决方案解决它 /^(\D*\D?\D*){0,7}$/ 每个数字字符都可以被非数字字符包围。方法1 如果您同意在JavaScript中添加一些逻辑,那

字符串的规则:

  • 可以包含0-7个数字

测试用例:

  • abcd1234ghi567
    ⟶ <代码>真值
  • 1234567abc
    ⟶ <代码>真值
  • ab1234cd567
    ⟶ <代码>真值
  • abc12
    ⟶ <代码>真值
  • abc12345678
    ⟶ <代码>错误
我怎样才能得到一个正则表达式呢

我面临的问题是-如何保持整个字符串中的数字计数。数字可以出现在字符串中的任何位置

我想要一个纯正则表达式解决方案

解决它

/^(\D*\D?\D*){0,7}$/

每个数字字符都可以被非数字字符包围。

方法1 如果您同意在JavaScript中添加一些逻辑,那么像此函数这样简单的函数应该可以:

function validate(teststring) {
    return teststring.match(/\d/g).length < 8;
}
函数验证(teststring){
返回teststring.match(/\d/g).length<8;
}
演示
函数验证(teststring){
返回teststring.match(/\d/g).length<8;
}
document.body.innerHTML=
“abcd1234ghi567:”+验证('abcd1234ghi567')+”
+ “1234567abc:”+验证('1234567abc')+“
”+ “ab1234cd567:”+验证('ab1234cd567')+”
+ “abc12:”+验证('abc12')+”
+
“abc12345678:”+验证('abc12345678')+”
以下正则表达式可以检查总位数是否小于7:

var i,strings=[“abcd1234ghi567”、“1234567abc”、“ab1234cd567”、“abc12”、“abc12345678”];
对于(一组字符串){
编写(i+“->”+/^(?:[\D]*[0-9][\D]*){0,7}$/。测试(i)+“
”;
}
检查if语句中的
“abc12345678”.match(/\d/g).length
。我想要一个正则表达式,而不必在function@supritashankar:原因是什么?@casimirithippolyte我想作为json模式的一部分。我不想包括我的功能。我想这就是你想要的:谢谢你的回答。我只使用正则表达式添加了下面的答案。不必使用函数。检查它。向下投票,因为它没有满足原始要求,这是一个纯正则表达式匹配。@LennyMarkus:问题没有明确提到需要纯正则表达式解决方案,它包含标签
JavaScript
@LennyMarkus:只是为了完整性,我添加了第二种方法,其中逻辑仅放在正则表达式中。