【问题标题】:Javascript write regular expression to substitute http with html tagJavascript编写正则表达式用html标签替换http
【发布时间】:2017-03-22 07:54:45
【问题描述】:

如何使这个字符串变成文本

first video link: https://www.youtube.com/watch?v=123456

second video link: https://www.youtube.com/watch?v=8123123`;

成为

first video link: 
<a href="https://www.youtube.com/watch?v=123456">
  https://www.youtube.com/watch?v=123456
</a>

second video link: 
<a href="https://www.youtube.com/watch?v=8123123">
  https://www.youtube.com/watch?v=8123123
</a>

我写了一个正则表达式来解析链接

这就是我所拥有的。

<script type="text/javascript">
var myString =`first video link: https://www.youtube.com/watch?v=123456
second video link: https://www.youtube.com/watch?v=8123123`; 
var myRegexp = /(https|http)?:\/\/[\S]+/g;
var match = myRegexp.exec(myString);
console.log(match[0]) // https://www.youtube.com/watch?v=123456
</script>

【问题讨论】:

  • 社区脚本选择了多么奇怪的骗子。这里的问题不是匹配,而是替换
  • 抱歉,我不知道我需要用replacing 代替matching

标签: javascript regex


【解决方案1】:

使用以下解决方案:

var myString = "first video link: https://www.youtube.com/watch?v=123456\nsecond video link: https://www.youtube.com/watch?v=8123123"; 
var myRegexp = /https?:\/\/\S+/g;
var match = myString.replace(myRegexp, '<a href="$&"><br>  $&<br></a>');
document.body.innerHTML = match;

https?:\/\/\S+ 将匹配http,然后是可选的s,然后是://,然后\S+ 将匹配一个或多个非空白符号。整个匹配值可以通过$&amp; 反向引用插入到String#replace() 替换模式内的结果字符串中。

【讨论】:

    【解决方案2】:

    有关如何访问 myRegexp 的所有匹配项的详细信息,请参阅 retrieve all matches for a regular expression。您的示例代码看起来像字符串处理,您的问题可能会通过处理源 html 文档的元素或通过处理字符串并将结果贡献到文档中来正确解决。

    document.createElement('a').href=match[0];
    

    提示:您的正则表达式 (/(https|http)?://[\S]+/g) 也匹配“://not.an.url”。要么将“https”的“s”标记为可选,要么在表达式的可选协议部分包含“://”。

    【讨论】:

    • 如果 OP 需要 替换 字符串,为什么要查看链接的帖子?这不是关于匹配,而是关于替换
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多