当前位置:  开发笔记 > 编程语言 > 正文

如何检查字符串是否包含至少5个唯一字符,且最少7个字符?

如何解决《如何检查字符串是否包含至少5个唯一字符,且最少7个字符?》经验,为你挑选了1个好方法。

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

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

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

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



1> Rizier123..:

我不认为这很容易检查你是否有一个正则表达式至少有5个独特的字符,所以我使用另一种方法.

我检查有preg_match(),你的字符串只包含来自该字符的字符类 [a-zA-Z0-9]和至少7个字符长,我用支票量词:{7,}.

然后为了确保你有> = 5个唯一字符,我将你的字符串拆分成一个数组str_split(),获取所有唯一字符array_unique()并检查count()是否有> = 5个唯一字符,例如

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

因为,不清楚你是否想要在php或javascript中执行验证,使用Javascript添加类似的代码.

var regex = /^[a-zA-Z0-9]{7,}$/;

// Adding method on prototype, so that can be invoked on array
Array.prototype.unique = function() {
  var arr = this; // Cache array

  // Return the array by removing duplicates
  return this.filter(function(e, i) {
    return arr.indexOf(e) === i;
  });
};

// Binding keyup event on textbox(Demo Purpose)
document.getElementById('text').addEventListener('keyup', function(e) {
  var str = this.value; // Get value

  this.classList.remove('invalid'); // Remove classes

  // Check if regex satisfies, and there are unique elements than required
  if (regex.test(str) && str.split('').unique().length >= 5) {
    console.log('Valid');
    this.classList.add('valid'); // Demo Purpose
  } else {
    console.log('Invalid');
    this.classList.add('invalid'); // Demo Purpose
  }
}, false);
.valid {
  border: solid 1px green;
}
.invalid {
  border: solid 1px red;
}
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有