我需要实现客户端密码验证,这样密码就不应该包含用户的帐户名或用户全名中超过两个连续字符的部分。我在客户端公开了用户名和全名,但是到目前为止,我还不知道在客户端实现正则表达式或其他方法。范例
username: test20@xyz.com password: Usertest123 --> this should fail the validation since it contains "test" in both password and username.
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 comparison、How to check whether a string contains a substring in JavaScript?)。
substr
indexOf
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);
`
2条答案
按热度按时间hmmo2u0o1#
我只能想到这一点:
但我认为regex不是合适的工具,因为它需要转义等。您最好使用简单的
substr
/indexOf
算法(请参见JavaScript case insensitive string comparison、How to check whether a string contains a substring in JavaScript?)。y0u0uwnf2#
如果在TS中需要它,您可以键入:'const threeParts =电子邮件.匹配(/.{3}/g)||【】;
`