我想提取字符串中的第一个有效URL,它可以是字符和空格之间的任何位置
我尝试了以下
...
urlRegex: /^(http[s]?:\/\/.*?\/[a-zA-Z-_]+.*)$/,
...
var input = event.target.value // <--- some string;
var url = input.match(this.urlRegex);
问题是url
在找到url时返回整个字符串,而不是只返回与正则表达式匹配的字符串部分
实施例 字符串
https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd
返回
["https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd", "https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd", index: 0, input: "https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd"]
如何实现这一目标?
答案 0 :(得分:2)
您的 regex
不正确。
正确的正则表达式用于提取URl: /(https?:\/\/[^ ]*)/
查看此fiddle。
以下是摘录。
var urlRegex = /(https?:\/\/[^ ]*)/;
var input = "https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd";
var url = input.match(urlRegex)[1];
alert(url);
答案 1 :(得分:2)
Live Demo左侧有正则表达式解释。
var regex = /^(https?:\/\/[^/]+(\/[\w-]+)+)/;
var str = 'https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd';
var url = str.match(regex)[0];
document.write(url);
答案 2 :(得分:0)