我需要一个正则表达式来检查字符串上的以下条件:-
1(它只包含数字(0-9( 2( 字符串必须包含三个唯一数字 3(字符串中不得有空格 4( 并且字符串的长度必须为 10。
有效字符串示例 "1234567890" "1122557890" "7878787808">
无效字符串:- "7878787878" "1111122222">
您可以做的是从字符串的开头^
到结束$
^[0-9]{10}$
匹配 10 位数字,如果成功,请首先测试。
如果是这种情况,您只能从字符串中获取唯一值,如果该计数等于或大于 3,则您有匹配项。
有多种方法可以从数组中删除重复值。对于此示例,我使用了此页面中的方法。
let strings = [
"1234567890",
"1122557890",
"7878787808",
"7878787878",
"1111122222"
];
let pattern = /^[0-9]{10}$/;
strings.forEach((s) => {
if (pattern.test(s)) {
let a = s.split("").filter(function(x, i, a) {
return a.indexOf(x) === i;
});
if (a.length >= 3) {
console.log("Valid: " + s);
}
}
});