我正在使用 jquery 实施 实时验证 ,并且我正在寻求帮助 正则表达式 符合我的要求。
要求:
密码必须为字母数字(即必须包含至少一个字母和一个整数),并且可能包含(即可选)特殊字符。
我尝试过的内容:
以下是我尝试的代码,但它没有用。
jQuery("#bgpass").validate({
expression: "if (VAL.match(/^(?=[A-Za-z0-9@%&#]$)(?=.*\d)(?=.*[A-Za-z]).*$/)) return true; else return false;",
message: "Password must be alphanumeric and can contain some special characters"
});
问题:
允许没有至少一个字母和一个整数的密码。
允许使用的示例:
1234567 - Doesn't contain atleast one alphabet.
amazing - Doesn't contain atleast one integer.
am@zing - Doesn't contain atleast one integer.
123$567 - Doesn't contain atleast one alphabet.
我做错了什么!
P.S: 我对 正则表达式 非常陌生。
答案 0 :(得分:1)
你有正则表达式的一些问题。您可以将其修改为
/^(?=.*\d)(?=.*[A-Za-z])/
^
将正则表达式锚定在字符串的开头。
(?=.*\d)
这是一个积极的展望。它检查字符串是否包含数字。
(?=.*[A-Za-z])
另一个积极向前看。这将检查字符串是否包含任何后跟字母表的内容。
^(?=[A-Za-z0-9@%&#]$)(?=.*\d)(?=.*[A-Za-z]).*$/
有什么问题?
^(?=[A-Za-z0-9@%&#]$)
这个积极向前看是指匹配字符串的开头^
。检查列表中是否有任何内容后跟,然后立即匹配字符串$
的结尾。这不是一个可能的情况。因此正则表达式将不匹配任何输入字符串。答案 1 :(得分:1)
^(?=[A-Za-z0-9@%&#]+$)(?=.*\d)(?=.*[A-Za-z]).*$
^^
你错过了一个量词。它的工作正常。你的代码有问题。
参见演示。