当正则表达式与测试字符串匹配时,Javascript .test 要么不返回任何内容,要么不返回 false?

标签 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");.
  • regexstring 使用 ' 单引号和 " 双引号。
  • 使用 /i/g 附加正则表达式。

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

这是我编写的 jsFiddle 链接,如果您认为自己对如何解决这个问题有所了解,可以尝试一下:http://jsfiddle.net/wFhEJ/1/

最佳答案

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

/regexp/flags

包含正则表达式的事情是它变成了字符串,并且在 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)) 或类似的东西。

关于当正则表达式与测试字符串匹配时,Javascript .test 要么不返回任何内容,要么不返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8630359/

相关文章:

javascript - 是否可以为一个测试设置环境变量?

php - 匹配多行文本

Python Regex - + 元字符不贪婪

javascript - 如何找到具有与 X 相关的起点、宽度和 Angular 点坐标

javascript - React superagent 的单个文件?

javascript - 扩展 super 测试

javascript - 如何使用列表搜索过滤器显示 "No results"消息?

javascript - 限制为所有字符还是所有数字?

java - 正则表达式:Eclipse 中的转义模式,与之前的单词不匹配

Java正则表达式(贪婪/非贪婪)