我正在尝试创建一个if语句来测试jQuery(或Javascript)中的字符串。以下是条件:
这是我的正则表达式代码:
((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})
我在一个测试正则表达式代码的网站上测试过,它运行正常。
这是我目前的if语句:
if(((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}).test(strOldPassword))
{
alert("Something");
}
我的网页加载时出现语法错误,但说正则表达式存在问题。
有人可以帮我找到我做错的事吗?感谢。
答案 0 :(得分:3)
有两种方法可以在JavaScript中定义正则表达式。
使用/.../
语法。
/((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})/
通过创建一个RegExp对象的实例,该对象在构造函数中接受正则表达式作为String。
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");
}
答案 1 :(得分:1)
尝试以下方法:
if(/^(?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})$/.test(strOldPassword))
// -- --
/.../
分隔正则表达式文字,以便解析器知道要解析为正则表达式的内容,而不是javascript(很像单引号分隔字符串)。
^...$
表示整个字符串应该匹配(否则你将测试至少 6-8个字符)。
// -- ... --
只是一个评论,表明我已经开始做什么。
答案 2 :(得分:0)
知道了!
if (!(/((?=^[^0-9])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8})$/.test(strOldPassword)))
{
jQuery('#txtOldPassword').addClass('error');
}
感谢小伙伴们。