使用正则表达式if,否则与.test()函数冲突

时间:2009-11-02 19:51:40

标签: javascript

在给定的代码中,best.test(password)返回true,但是当我在if()中使用它时 条件将其视为虚假。

代码:

if(best.test(password))              //It takes it as a false .
{
    document.write(best.test(password));
    tdPwdStrength.innerHTML="best"+best.test(password);  //but in actual it is true and returning true. 
}                                                     

请建议!

1 个答案:

答案 0 :(得分:1)

什么是best?它是一个'全局'RegExp,也就是设置了g标志的那个?

如果是这样,那么每次拨打testexec时,您都会得到不同的答案,因为它会记住上一个字符串索引并从那里搜索:

var r= /a/g;                // or new RegExp('a', 'g')
alert(r.test('aardvark'));  // true. matches first `a`
alert(r.test('aardvark'));  // true. matches second `a`
alert(r.test('aardvark'));  // true. matches third `a`
alert(r.test('aardvark'));  // false! no more matches found
alert(r.test('aardvark'));  // true. back to the first `a` again

JavaScript的RegExp界面充满了令人困惑的小陷阱。小心。