使用正则表达式检测URL |淘汰赛

时间:2016-05-19 20:50:33

标签: javascript regex knockout.js

我目前正在编辑一个项目,其中前端主要用Javascript和knockout,js编写。现在我正在尝试检测文本中的URL并将其转换为链接。进行快速堆栈溢出搜索,我发现在Javascript中,以下函数将为我执行此操作:

var replaceURLWithHTMLLinks = function(text) {
  var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
  return text.replace(exp,"<a href='$1'>$1</a>");
};

然而,我无法弄清楚如何用淘汰赛实现这一点。另一个快速搜索显示很多人使用正则表达式与.extend()函数(如

)进行淘汰
this.foo = ko.observable().extend(<function>)

其中<function>是他们的正则表达式函数。这些示例中的正则表达式并不详细,我正在尝试弄清楚如何将URL检测功能实现为淘汰赛extend

1 个答案:

答案 0 :(得分:0)

我很确定你可以使用replaceURLWithHTMLLinks,只要你在代码中的某处调用它即可。这实际上会替换。

Knockout extend方法提供了对数据进行验证的功能。例如,如果您的输入字段需要特定格式或其他验证,则可以使用extend验证您的电话号码和日期是否格式正确,以及您的数字字段中只包含数字。< / p>

extend与您尝试做的完全不同,所以你跳过这一部分,完全是出于此目的。

只需直接在您的Javascript中调用replaceURLWithHTMLLinks,即可完成。