我正在使用以下代码从名为description的字符串变量中提取URL。可以,但是它将合并重复的URL。
let geturl = new RegExp(/(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])/igm);
let urlExtracted = description.match(geturl);
是否有任何方法可以更改代码,以便即使它们重复出现,也可以按照在变量中找到URL的顺序提取所有URL?
答案 0 :(得分:0)
根据字符串和模式创建一个tokenized match object,然后将该令牌对象转换为列表。
刚刚意识到我建议的答案使用与您的问题相同的代码。但是我尝试了this code pen中使用的代码,但无法通过以下示例复制错误:
var y = "https://www.youtube.com/watch?v=tIM-kdmKhnE https://codepen.io/hellopravin/pen/NqLgqB hi https://stackoverflow.com/questions/8441915/tokenizing-strings-using-regular-expression-in-javascript https://www.youtube.com/watch?v=tIM-kdmKhnE";
var regex = /(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])/igm;
var match = y.match(regex);
//document.write(Array.from(match));
document.write(match);