比如abc123abc123 至少两个字符重复就算符合,至少得字母和数字组合
比如c1 c123 abc123 有这样重复的部分 就算符合了
比如abc123abc123 至少两个字符重复就算符合,至少得字母和数字组合
比如c1 c123 abc123 有这样重复的部分 就算符合了
不确定你的描述是否和我想的一样,最低符合条件是否是 存在一个字母和一个数字的组合(不分前后),至少存在两个这样的组合。
比如 aaab123 ab12
实际上他满足要求的情况是 ab1
组合 或者 b1
组合 或者 b12
组合 或者 ab12
组合。
如果只是判断是否有你说的这样的条件,只要 b1
组合满足既满足。 用贪心来弄就行。
(下面代码只是针对我上面说的情况,如果你的需求不是这样,希望能表述清楚)
const str = 'c1 c3 abc23';
function testArr(arr) {
for (let i = 0, len = arr.length; i < len; i++) {
if (/[a-z]/.test(arr[i]) && /[0-9]/.test(arr[i + 1])) {
if (str.split(arr[i] + '' + arr[i + 1]) > 2) {
return true;
}
} else if (/[a-z]/.test(arr[i + 1]) && /[0-9]/.test(arr[i])) {
if (str.split(arr[i] + '' + arr[i + 1]) > 2) {
return true;
}
}
}
return false;
}
console.log(testArr([...str]));
var str = "c1 c223 abcc123";
function testRepeat(str){
var arr = str.match(/([a-zA-Z]\d)/g);//匹配字符转换为数组 本例:[c1,c2,c1]
for(var i=0;i<arr.length;i++){//遍历每一位是否与其他相同
if(arr.indexOf(arr[i],i+1)>0){
return true;
}
}
return false;
}
console.log(testRepeat(str))
/([a-z]\w+)(?=.*\1)/ig
> ptn = /([a-z]\w+)(?=.*\1)/ig
> s='xyz2333H1abc123abc123xyz233HH12'
> s.match(ptn)
[ 'xyz233', 'H1', 'abc123' ]
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
/([a-zA-Z]+\d+).*\1/.test('abc123abc123')
关键是
\1
,表示重复之前的捕获