Javascript 使用顺序字母和数字进行密码验证-正则表达式

Javascript 使用顺序字母和数字进行密码验证-正则表达式,javascript,regex,password-protection,Javascript,Regex,Password Protection,为了使客户帐户更安全,精心编制的密码是一种良好的做法。这是用于密码验证的正则表达式字符串 /^(?=.*[0-9])(?!.*?\d{3})(?=.*[a-zA-Z])(?!.*?[a-zA-Z]{3})(?=.*[~!@#$%^&*()+-?])([a-zA-Z0-9~!@#$%^&*()+-?]{8,})$/ 代表: 8个或更多字符 大写字母A-Z 小写字母a-z 特殊字符~!@$%^&*()+- 此正则表达式函数的作用是什么?:最多不能包含3个连续字母和/或数字。 将

为了使客户帐户更安全,精心编制的密码是一种良好的做法。这是用于密码验证的正则表达式字符串

/^(?=.*[0-9])(?!.*?\d{3})(?=.*[a-zA-Z])(?!.*?[a-zA-Z]{3})(?=.*[~!@#$%^&*()+-?])([a-zA-Z0-9~!@#$%^&*()+-?]{8,})$/
代表:

  • 8个或更多字符
  • 大写字母A-Z
  • 小写字母a-z
  • 特殊字符~!@$%^&*()+-
  • 此正则表达式函数的作用是什么?:最多不能包含3个连续字母和/或数字。
将数字和/或字母按顺序3或更多顺序排列是不正确的

例如:

不正常=efg123!$,abcd567%,xyz789^&,#hijk23456
好的=RyiU562@,erty745#,gjnfl45566^


谢谢

据我所知,没有办法使用正则表达式,但这里有一个简单的函数方法

首先,循环遍历字符串,通过向当前索引添加+1和+2并进行适当比较,将每个字符与下两个字符进行比较

第二,再次循环字符串并将下两个字符与当前字符进行比较,以查看它们是否是连续的

如果两个循环都找不到连续字符,则函数返回true,否则返回false

前四个返回false(失败),而后三个返回true(通过)

功能测试{
//检查序列数字字符
对于(s中的var i)
如果(+s[+i+1]==+s[i]+1&&
+s[+i+2]==+s[i]+2)返回false;
//检查顺序字母字符
对于(s中的var i)
if(String.fromCharCode(s.charCodeAt(i)+1)=s[+i+1]&&
String.fromCharCode(s.charCodeAt(i)+2)=s[+i+2])返回false;
返回true;
}
//仅供演示之用
var测试=[
“efg123!$”,
“abcd567%,
“xyz789^&”,
"hijk23456",,
"ryiu562",,
“erty745#”,
“gjnfl45566^”
],sep='\t\u2192',out=['Fail','Pass'],eol='
; 文件。写(“”); 对于(测试中的var i)文件,编写(测试[i]+sep+out[+test(测试[i])]+eol);
文件。写(“”)
通过循环字符并使用下面的
charCodeAt
string方法,您可以使用类似于下面的函数

注意:这也是针对下面链接中提出的问题

函数验证(){
var pwd=document.getElementById('password')。值;
var isValid=checkPassword(pwd);
var elm=document.getElementById('result');
elm.innerHTML=isValid?'Valid':'Invalid';
elm.style.color=isValid?'green':'red';
}
函数检查密码{
若有(s){
var测试=(x)=>!isNaN(x);
变量检查=(x,y,i)=>x+i==y;
对于(变量i=0;i


这方面没有简单的正则表达式。我认为你对用户太苛刻了。用户对其密码负责。即使你试图在密码中禁止
12345
abcde
,你也无法阻止他们想象的所有愚蠢的序列。如果您想要更强大的密码,请增加最小密码大小(或禁止美国用户摘录《圣经》)。使用第三方库如何?也许像dropbox的zxcvnb和测试密码分数……别忘了禁止序列
今晚你寂寞吗
。你的正则表达式中有一个错误。在两个字符类中都有
+-?
,它定义了一个与
[+,\-./0123456789:;?]
等效的范围。我很确定这不是你的意思。我知道这有点旧,但非常需要,但是,我也需要它来匹配下降和上升。它会是负数而不是正数吗?