当正则表达式匹配测试的字符串时,Javascript .test要么返回false,要么返回false?

时间:2011-12-25 16:05:41

标签: javascript regex

我正在使用javascript的内置.test()函数来测试字符串或正则表达式是否匹配。我从 RegexLib 中获取了正则表达式,因此我知道它与它所测试的字符串匹配(在本例中为joe@aol.com),但它要么返回false,要么根本不返回任何内容。

这是我的代码:

var string = "joe@aol.com";
var pattern = [\w-]+@([\w-]+\.)+[\w-]+/i;
var match = pattern.test(string);

document.write(match);

当正则表达式用引号括起来时,测试返回false,当它没有包含在任何内容中时,它什么也不返回。

到目前为止我尝试过:

  • 只需使用一行var match = '[\w-]+@([\w-]+\.)+[\w-]+/i'.test("joe@aol.com");
  • 同时为'"使用regex单引号和string双引号。
  • 使用/i/g附加正则表达式。

老实说,我不知道是什么导致了这个问题,所以任何帮助都会很棒。这可能是一个完整的新手错误,也许是一个被遗忘的语法。

如果您认为自己已经知道如何解决这个问题,那么这里有一个jsFiddle的链接我可以解决这个问题:http://jsfiddle.net/wFhEJ/1/

1 个答案:

答案 0 :(得分:6)

你错过了正则表达式的开头斜线。正则表达式的表示法是:

/regexp/flags

封装正则表达式后发生的事情是它变成了一个字符串,并且由MooTools设置了jsFiddle String.prototype.test。 MooTools似乎提供String.prototype.test函数,但它与RegExp.prototype.test不同。

http://jsfiddle.net/wFhEJ/2/

var string = "joe@aol.com";
var pattern = /[\w-]+@([\w-]+\.)+[\w-]+/i;
var match = pattern.test(string);

document.write(match);

请注意document.write不赞成。你可能更想要document.body.appendChild(document.createTextNode(match))或类似的东西。