我正在尝试创建一个if语句,该语句将在jQuery(或Javascript)中测试字符串。 以下是条件:
- 必须介于 6-8 个字符之间。
- 第一个字符不能是数字。
- 必须包含 1 个数字、1 个小写字母和 1 个大写字母。
这是我的正则表达式代码:
((?=^[^0-9])(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,8})
我在一个测试正则表达式代码的网站上对其进行了测试,它工作正常。
这是我目前的if语句:
if(((?=^[^0-9])(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,8}).test(strOldPassword))
{
alert("Something");
}
但是,当我的网页加载时,我收到语法错误,说正则表达式有问题。
有人可以帮助我找到我做错了什么吗? 谢谢。
方法可以在 JavaScript 中定义正则表达式。
使用
/.../
语法。/((?=^[^0-9])(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,8})/
通过创建 RegExp 对象的实例,该实例在构造函数中接受正则表达式作为字符串。
new RegExp("((?=^[^0-9])(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,8})")
那是
if(/((?=^[^0-9])(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,8})/.test(strOldPassword)){
alert("Something");
}
尝试以下操作:
if(/^(?=^[^0-9])(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,8})$/.test(strOldPassword))
// -- --
/.../
分隔正则表达式文字,以便解析器知道要解析的内容为正则表达式,而不是JavaScript(很像单引号分隔字符串)。
^...$
表示应匹配整个字符串(否则您将测试至少 6-8 个字符)。
// -- ... --
只是一个评论,表明我追逐了什么。
知道了!
if (!(/((?=^[^0-9])(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,8})$/.test(strOldPassword)))
{
jQuery('#txtOldPassword').addClass('error');
}
谢谢你的提示伙计们。