regex Javascript密码不应包含用户的帐户名或用户全名中超过两个连续字符的部分

krcsximq  于 2022-11-26  发布在  Java
关注(0)|答案(2)|浏览(150)

我需要实现客户端密码验证,这样密码就不应该包含用户的帐户名或用户全名中超过两个连续字符的部分。
我在客户端公开了用户名和全名,但是到目前为止,我还不知道在客户端实现正则表达式或其他方法。
范例

username: test20@xyz.com
password: Usertest123 --> this should fail the validation since it contains "test" in both password and username.
hmmo2u0o

hmmo2u0o1#

我只能想到这一点:

var name = "test20@xyz", password = "usertest123"

var partsOfThreeLetters = name.match(/.{3}/g).concat(
                           name.substr(1).match(/.{3}/g),
                           name.substr(2).match(/.{3}/g) );
new RegExp(partsOfThreeLetters.join("|"), "i").test(password); // true

但我认为regex不是合适的工具,因为它需要转义等。您最好使用简单的substr/indexOf算法(请参见JavaScript case insensitive string comparisonHow to check whether a string contains a substring in JavaScript?)。

y0u0uwnf

y0u0uwnf2#

如果在TS中需要它,您可以键入:'const threeParts =电子邮件.匹配(/.{3}/g)||【】;

const allThreeParts = threeParts.concat(email.slice(1).match(/.{3}/g) ?? [], email.slice(2).match(/.{3}/g) ?? []);

return new RegExp(allThreeParts.join("|"), "i").test(password);

`

相关问题