我正在使用 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/
最佳答案
您错过了正则表达式的开始斜线。正则表达式的表示法是:
/regexp/flags
包含正则表达式的事情是它变成了字符串,并且在 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);
请注意 document.write
是不受欢迎的。您可能更想要 document.body.appendChild(document.createTextNode(match))
或类似的东西。
关于当正则表达式与测试字符串匹配时,Javascript .test 要么不返回任何内容,要么不返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8630359/