【问题标题】:Extract url using regex without merging使用正则表达式提取url而不合并
【发布时间】:2018-11-04 23:52:15
【问题描述】:

我正在使用下面的代码从名为 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,即使它们是重复的?

【问题讨论】:

  • 您能否提供示例列表和预期输出?

标签: javascript regex


【解决方案1】:

从字符串和模式创建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);

【讨论】:

  • 您应该显示一些代码以使您的答案更好
  • 谢谢,您的代码的输出是什么? www.youtube.com 的 URL .... 只显示一次,对吗?我希望 URL 显示的次数与在文本中找到的 URL 一样多
  • 我刚刚检查过,似乎我的字符串有一些问题,而不是代码中的正则表达式。让我检查确认
  • 我想评论一下代码没有问题,这是输入字符串的问题。感谢您的反馈和帮助。
  • 没问题,如果您不介意通过我的答案旁边的支票接受我的答案,我将不胜感激。 @卡尔文
猜你喜欢
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多