我需要制作一个正则表达式来验证Swift中字母数字字符串的以下几点,我不知道如何实现它们:
不超过4个连续的字母或数字字符
(例如12345a或1abcde会出错,但123a45或abcd1e是正确的)
不超过4个相同的字母数字字符
(例如111a11或aaaa1a会出错)
正好6个字符
非常感谢帮助,谢谢。
答案 0 :(得分:0)
正如其他人所指出的那样,仅使用正则表达式很难完成第二个要求,而第一个和第三个要求可以通过以下方式完成:
^
(?!\D*\d{5,}\D*)
(?![^A-Za-z]*[A-Za-z]{5,}[^A-Za-z]*)
.{6}
$
答案 1 :(得分:0)
在每个简单的步骤中完成整个工作: 注意:这是一个javascript解决方案,但您可以按照相同的逻辑转换为您选择的语言:
var str = "ss4sss";
fnTest = function(str){
var isValid = true;
if(/\d{5,}/.test(str)){// no more than 4 consecutive numeric chars
return false;
}else if(/[a-z]{5,}/i.test(str)){// no more than 4 consecutive alpha chars
return false;
}else if(str.length !== 6){// not 6 characters
return false;
}else{ // any character used more than 4 times
var reg = /([\w\W])/g;
var arrM ;
var obj = {};
while(arrM = reg.exec(str)){
var letter = arrM[1];
if(!obj[letter]){
obj[letter] = 0;
}
obj[letter]++;
if(obj[letter] > 4){
isValid = false;
break;
}
}
}
return isValid;
}
fnTest(str);