当regex匹配测试字符串时,Javascript .test要么不返回任何值,要么返回false

Javascript .test either returns nothing or false, when regex matches the tested string?

本文关键字:返回 regex 任何值 false test 字符串 Javascript 测试      更新时间:2023-09-26

我使用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"); .
  • regexstring同时使用'单引号和"双引号
  • 添加/i/g的正则表达式
我真的不知道是什么导致了这个问题,所以任何帮助将是伟大的。这可能是一个完全的新手错误,可能是一个被遗忘的语法。

这里有一个jsFiddle的链接,如果你认为你有一些想法如何解决这个问题:http://jsfiddle.net/wFhEJ/1/

您错过了regexp的开始斜杠。regexp的表示法是:

/regexp/flags

封闭regexp发生的事情是它变成了一个字符串,并且在jsFiddle上String.prototype.test已经由MooTools设置。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))或类似的内容。