javascript - Match() 方法的正则表达式错误

标签 javascript regex

我正在使用正则表达式来捕获 URL 字符串,但它不起作用。

这是我的代码,它来自外部 JavaScript 文档,链接到 HTML 文件:

var url = 'The URL was www.google.com';
var urlRegEx = /((\bhttps?:\/\/)|(\bwww\.))\S*/;
var urlRegMatch = url.match(urlRegEx);
document.write(urlRegMatch);

我得到的输出是这样的:“www.google.com,www.,,www.”

我做错了什么?

谢谢! :)

最佳答案

您的正则表达式工作正常,发生的情况是,根据匹配函数,您将为正则表达式中的每个组(由这些括号定义)获得一个额外结果。要访问整个比赛,您可以访问比赛返回的第一项,如下所示:

var url = 'The URL was www.google.com';
var urlRegEx = /((\bhttps?:\/\/)|(\bwww\.))\S*/;
var urlRegMatch = url.match(urlRegEx)[0]; //this line changed, im using [0] to access the whole match only
document.write(urlRegMatch);

工作示例:https://jsfiddle.net/2sptg5rz/3/

匹配功能引用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match#Return_value

关于javascript - Match() 方法的正则表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52417327/

相关文章:

javascript - 解析、获取并显示当前用户

regex - Bash 正则表达式——似乎无法匹配任何\s\S\d\D\w\W 等

c++ - C+ +'s std::regex have an equivalent to Python' 是否为 re.MULTILINE?

javascript - 在函数中使用/添加正则表达式(?)将 HTML 表导出到 Excel?

javascript - Backbone.js 如何在不使用 ID 的情况下跟踪 DOM 元素?

javascript - 尝试为学习伙伴类型网站制作进度计数器

javascript - 为什么 Chrome unsafeWindow 技巧不支持 XMLHttpRequest 发送覆盖?

regex - 从文件中删除第一个多行注释

java - 需要正则表达式帮助

javascript - Discord.js 计数器和存储