Php 如何检查一个字符串是否至少包含5个唯一字符且长度至少为7个字符?

Php 如何检查一个字符串是否至少包含5个唯一字符且长度至少为7个字符?,php,regex,javascript,Php,Regex,Javascript,我需要一个验证来测试一个包含5个唯一字符且长度至少为7个字符的字符串 我已经用以下正则表达式尝试过了: ^[a-zA-Z][0-9]{7}$ 我被卡住了,不知道如何进行验证,以使字符串至少包含5个唯一字符。我想,您希望将{6,}用于7个或更多字符。除了“5个或更多不同”的正则表达式之外,您可能还需要做一些事情 或者^[a-zA-Z0-9]{7,}如果括号错误 我不知道php,但下面是我将用于5 diff部分的算法: int seen[256] = {0}; int ndiff = 0; f

我需要一个验证来测试一个包含5个唯一字符且长度至少为7个字符的字符串

我已经用以下正则表达式尝试过了:

^[a-zA-Z][0-9]{7}$  

我被卡住了,不知道如何进行验证,以使字符串至少包含5个唯一字符。

我想,您希望将{6,}用于7个或更多字符。除了“5个或更多不同”的正则表达式之外,您可能还需要做一些事情

或者^[a-zA-Z0-9]{7,}如果括号错误

我不知道php,但下面是我将用于5 diff部分的算法:

int seen[256] = {0};
int ndiff = 0;
for each char c in string {
    seen[c]++;
 }
 for (int i = 0; i < 256; ++i) {
     if (seen[i]) ndiff++;
  }
int-seen[256]={0};
int-ndiff=0;
对于字符串中的每个字符c{
seen[c]++;
}
对于(int i=0;i<256;++i){
if(见[i])ndiff++;
}

我相信你的括号太多了

@“^[a-zA-Z0-9]{7}$”

我认为这不容易检查是否有至少5个带有正则表达式的唯一字符,因此我使用另一种方法

我检查,您的字符串只包含此
[a-zA-Z0-9]
中的字符,长度至少为7个字符,我用a:
{7,}
检查

然后,为了确保您有>=5个唯一字符,我将字符串拆分为一个数组,使用获取所有唯一字符,并检查是否有>=5个唯一字符,例如

if(preg_match("/^[a-zA-Z0-9]{7,}$/", $input) && count(array_unique(str_split($input))) >= 5) {
    //good
} else {
    /bad
}

正如问题所述,不清楚您是否希望在或中执行验证,使用Javascript添加类似的代码

var regex=/^[a-zA-Z0-9]{7,}$/;
//在原型上添加方法,以便可以在数组上调用
Array.prototype.unique=函数(){
var arr=this;//缓存数组
//通过删除重复项返回数组
返回此.filter(函数(e,i){
返回arr.indexOf(e)==i;
});
};
//文本框上绑定keyup事件(演示用途)
document.getElementById('text')。addEventListener('keyup',函数(e){
var str=this.value;//获取值
this.classList.remove('invalid');//删除类
//检查正则表达式是否满足要求,以及是否存在超出要求的唯一元素
if(正则表达式测试(str)&&str.split(“”).unique().length>=5){
console.log('Valid');
this.classList.add('valid');//演示用途
}否则{
console.log('Invalid');
this.classList.add('invalid');//演示用途
}
},假)
。有效{
边框:实心1px绿色;
}
.无效{
边框:实心1px红色;
}

我想做5个或更多对不起,我不知道它不需要完全是正则表达式,我们可以尝试其他方式,只是需要完成工作,谢谢5个不同的,我想你的意思是“aaaabcd”不通过,但“aaabcde”通过。这并没有解决你的潜在需求,只是一个说明,如书面所示,正则表达式(/^[a-zA-Z][0-9]{7}$/)将匹配满足以下条件的字符串(1)以英文字母开头(忽略大小写),(2)以7位数字结尾(0-9)。我想你的意思是/^[a-zA-Z0-9]{7}$/,它应该匹配任何正好包含7个英文字母或数字字符的字符串。这仍然不是您真正想要的,但它可能有助于澄清一点。我希望在PHP中使用它,但如果我们无法在PHP中使用它,我们可以尝试使用javascriptIt,如果您使用{7},您应该使用{7,}而不是。谢谢,PHP很好me@Geek用纯正则表达式更新了答案,只是为了完整,并向你展示这是可能的。谢谢你,伙计,你是个救生员:)