Javascript 密码不应包含用户的帐户名或用户全名中超过两个连续字符的部分
Javascript Password should not contain user's account name or parts of the user's full name that exceed two consecutive characters
我需要实现客户端密码验证,以便密码不应包含用户的帐户名或用户全名中超过两个连续字符的部分。
我在客户端公开用户名和全名。但到目前为止,我无法弄清楚正则表达式或任何其他在客户端实现的方法。
例
username: test20@xyz.com
password: Usertest123 --> this should fail the validation since it contains "test" in both password and username.
我只能想到这一点:
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
但我不认为正则表达式是这里的合适工具,因为它需要转义等。你最好使用一个简单的substr
/indexOf
算法(参见JavaScript不区分大小写的字符串比较,如何检查一个字符串是否包含JavaScript中的子字符串?)。
如果你在 TS 中需要它,你可以键入:`const threePart = email.match(/.{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);
'
相关文章:
- 在Google Analytics中跟踪用户,但只能在两个操作之间跟踪
- 通过node.js和socket.io在两个用户之间发送消息
- 两个用户如何协作编辑 JSON 文件
- Javascript 密码不应包含用户的帐户名或用户全名中超过两个连续字符的部分
- 用户如何获取两个时间戳之间的对象
- 一个用户脚本的两个实例如何在帧之间进行通信
- 用户输入时刻js的两个日期之间的差异
- 两个用户通过 websocket 编辑输入时出现问题
- 插座.IO - 同一登录用户在两个不同浏览器中使用 socket.id
- 如何使用用户输入中的 three.js 在场景中加载两个或多个 .obj 对象
- 单用户操作触发两个事件-第二个事件不触发't触发器
- 如何为不同的用户组运行两个版本的 Backbone.js 应用程序
- 如果突出显示某个单词,并且用户单击了连接单词,请突出显示这两个单词
- 具有两个不同用户输入的 jQuery 输入掩码
- 如何组合两个 javascript 以包含服务器时间而不是用户时间的 ajax 调用
- 如何同时重定向两个用户 AJAX XML
- 如何在 JS 中比较两个日期?一个是用户选择的,一个是当前日期
- 求和2个跨度元素中的两个值(用户可以通过下拉菜单选择每个跨度元素的值)
- 使用jquery的同一页面中的两个用户控件不起作用
- 检查用户光标是否位于文本区域中的两个标记之间