我正在使用正则表达式捕获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。”
我在做什么错了?
谢谢! :)
答案 0 :(得分:1)
您的正则表达式工作正常,发生的情况是,根据匹配功能,正则表达式中的每个组(由这些括号定义)都会得到一个额外的结果。要访问整个比赛,您可以访问比赛返回的第一项,如下所示:
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);
答案 1 :(得分:0)
我要感谢@Dknacht和@Tressa将我引导到正确的答案,因为数组的第一个值0是匹配的文本。
此代码适用于我想做的事情:
var url = 'The URL was www.google.com';
var urlRegEx = /((\bhttps?:\/\/)|(\bwww\.))\S*/
var urlRegMatch = url.match(urlRegEx);
document.write(urlRegMatch[0]);