正则表达式 - 字符串不应包含超过 7 位数字
Regex - String should not include more than 7 digits
字符串规则:
- 可以包含 0-7 位数字
测试用例 :
-
abcd1234ghi567
⟶True
-
1234567abc
⟶true
-
ab1234cd567
⟶true
-
abc12
⟶True
-
abc12345678
⟶False
我如何为相同的正则表达式想出一个正则表达式?
我面临的问题是 - 如何保持整个字符串中的位数。数字可以出现在字符串中的任何位置。
我想要一个纯粹的正则表达式解决方案
方法 1
如果你同意将一些逻辑放在你的JavaScript中,那么像这个函数这样简单的事情应该可以做到:
function validate(teststring) {
return teststring.match(/'d/g).length < 8;
}
演示
function validate(teststring) {
return teststring.match(/'d/g).length < 8;
}
document.body.innerHTML =
'<b>abcd1234ghi567 :</b> ' + validate('abcd1234ghi567') + '<br />' +
'<b>1234567abc :</b> ' + validate('1234567abc') + '<br />'+
'<b>ab1234cd567 :</b> ' + validate('ab1234cd567') + '<br />'+
'<b>abc12 :</b> ' + validate('abc12') + '<br />'+
'<b>abc12345678 :</b> ' + validate('abc12345678') + '<br />';
(另见这首小提琴)
方法2
如果你希望所有的逻辑都放在正则表达式而不是JavaScript中,你可以使用像/^('D*'d?'D*){7}$/
或/^([^0-9]*[0-9]?[^0-9]*){7}$/
这样的正则表达式,并使用RegExp.prototype.test()而不是String.prototype.match()来测试你的字符串。
在这种情况下,您的验证函数将如下所示:
function validate(teststring) {
return /^([^0-9]*[0-9]?[^0-9]*){7}$/.test(teststring);
}
演示:
function validate(teststring) {
return /^([^0-9]*[0-9]?[^0-9]*){7}$/.test(teststring);
}
document.body.innerHTML =
'<b>abcd1234ghi567 :</b> ' + validate('abcd1234ghi567') + '<br />' +
'<b>1234567abc :</b> ' + validate('1234567abc') + '<br />'+
'<b>ab1234cd567 :</b> ' + validate('ab1234cd567') + '<br />'+
'<b>abc12 :</b> ' + validate('abc12') + '<br />'+
'<b>abc12345678 :</b> ' + validate('abc12345678') + '<br />';
想
通了!
/^('D*'d?'D*){0,7}$/
都可以被非数字字符包围。
以下正则表达式可以检查总位数是否小于 7:
var i, strings = ["abcd1234ghi567", "1234567abc", "ab1234cd567", "abc12", "abc12345678"];
for (i of strings) {
document.write(i + " -> " + /^(?:['D]*[0-9]['D]*){0,7}$/.test(i) + "</br>");
}
相关文章:
- 正好包含2个大写字母和3个数字的正则表达式
- 猫鼬——如何找到物体所在的场&;name”;不包含数字
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- 可以用javascript对包含数字的字符串进行排序
- 正则表达式,字符串末尾必须包含数字
- 如果类只包含一个特定数字,则向元素添加类
- DataTable如何防止在包含超链接的列中单击行
- 如何在javascript中测试字符串是否包含带正则表达式的数字
- 编写一个包含一个大写字母和六个数字的javascript表达式
- CKEDITOR-将粗体应用于包含数字的编号列表
- 如何检查子集数组是否包含超集数组之一
- 谷歌表单:在文档的电子邮件中包含超链接'谷歌硬盘的位置
- 在引导选择组件中的搜索不起作用,其中数据令牌包含所有数字;4730”;
- 正则表达式 - 字符串不应包含超过 7 位数字
- 密码的正则表达式必须包含至少八个字符,至少一个数字以及小写和大写字母以及特殊字符
- 如何检查输入框是否仅包含数字或逗号
- 如何将包含科学记数法的字符串转换为正确的 Javascript 数字格式
- Angular2:仅包含数字的字段的自定义验证
- 如何查找和替换包含数字的名称并将该数字存储在变量中
- 在数组中创建包含超链接项的下拉列表