我正在使用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);
Run Code Online (Sandbox Code Playgroud)
当正则表达式被引号括起来时,测试返回false,当它没有包含在任何内容中时,它什么都不返回.
到目前为止我尝试过的:
var match = '[\w-]+@([\w-]+\.)+[\w-]+/i'.test("joe@aol.com");.'单引号和"两个双引号regex和string./i和附加正则表达式/g.老实说,我不知道是什么导致了这个问题,所以任何帮助都会很棒.它可能是一个完整的新手错误,也许是一个被遗忘的语法.
这里有一个jsFiddle的链接,如果你认为你已经知道如何解决这个问题,我可以帮你解决这个问题:http://jsfiddle.net/wFhEJ/1/
你错过了正则表达式的开头斜线.正则表达式的表示法是:
/regexp/flags
Run Code Online (Sandbox Code Playgroud)
封闭正则表达式后发生的事情是它变成了一个字符串,并且在jsFiddle String.prototype.test上由MooTools设置.MooTools似乎提供了一个String.prototype.test功能,但它并不相同RegExp.prototype.test.
var string = "joe@aol.com";
var pattern = /[\w-]+@([\w-]+\.)+[\w-]+/i;
var match = pattern.test(string);
document.write(match);
Run Code Online (Sandbox Code Playgroud)
请注意,虽然这document.write是不赞成的.你可能更喜欢document.body.appendChild(document.createTextNode(match))或类似的东西.