gpt4 book ai didi

javascript - 用于检查用户登录的正则表达式不起作用

转载 作者:行者123 更新时间:2023-11-30 16:19:29 33 4
gpt4 key购买 nike

用户登录必须仅包含拉丁文和俄文字母、数字 0-9 和一些符号,如点等。我想使用正则表达式进行检查并尝试了不同的变体,但没有一个有效。

errors["error-name"] = '';
var nameRegex = '[a-zA-Z0-9А-Яа-я.+~_-!?*]/i';

if(!values['name'].match(nameRegex)) {
errors["error-name"] += "Incorrect login<br>";
}

怎么了?

最佳答案

要匹配所有俄文字母,仅 [А-Яа-я] 范围是不够的。您还需要将字母 [ёЁ] 添加到范围内,因为它不在该范围内。

此外,字符类中文字符号之间未转义的连字符会创建一个范围,最好将其放在字符类的开头或结尾。

要添加像必须至少有 N 个东西这样的限制,您需要使用锚定前瞻。

var nameRegex = /^(?=[^A-ZА-ЯЁ]*[A-ZА-ЯЁ])(?=[^0-9]*[0-9])[-A-Z0-9А-ЯЁ.+~_!?*]+$/i;

这里是 its demo

这里,^ 将模式锚定在字符串的开头,$ 将其锚定在字符串的末尾,(?=[^A-ZА-ЯЁ ]*[A-ZА-ЯЁ]) 至少需要一个字母,(?=[^0-9]*[0-9]) 至少需要一个数字。

请注意,我删除了所有小写字母,因为有一个不区分大小写的修饰符 /i

要仅匹配列表中的符号,请使用普通的 + 量词:

var nameRegex = /^[-A-Z0-9А-ЯЁ.+~_!?*]+$/i;
^

如果允许空字符串,请使用 * 而不是 +

关于javascript - 用于检查用户登录的正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34953723/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com