【问题标题】:Extract all the valid URL string inside an element (JavaScript)提取元素内的所有有效 URL 字符串 (JavaScript)
【发布时间】:2014-01-15 01:24:22
【问题描述】:

这可能很容易,但我不太擅长使用 javascript,尤其是正则表达式。我知道有一种方法可以使用.substr().substring() 获取子字符串。如果我知道 url 字符串的索引位置但文本是从数据库加载的,这对我来说很容易。

示例 html:

<div>
 <p>Some text text text text http://stackoverflow.com text text 
   text http://google.com text text text.
 </p>
</div>

我希望每个 url 字符串作为输出推入一个数组中。

var mystrings = new Array
var text = $('p').text();
var url = text.substr()//don't know the logic here
mystrings.push(url);
//output
mystrings[0] == 'http://stackoverflow.com'
mystrings[1] == 'http://google.com'

我也找到了这个正则表达式,但我不知道如何合并它:

var regexp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;

【问题讨论】:

    标签: javascript jquery regex string substring


    【解决方案1】:

    查看此JSFiddle。使用RegExp.exec()text 变量执行正则表达式。由于表达式上有 g 全局修饰符,while 循环将遍历字符串中每个匹配的 URL。

    var mystrings = new Array;
    
    var text = $('p').text();
    var regexp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    
    while (matches = regexp.exec(text))
    {
        mystrings.push(matches[0]);
    }
    
    console.log(mystrings);
    // ["http://stackoverflow.com", "http://google.com"]
    

    【讨论】:

      猜你喜欢
      • 2011-01-29
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 2020-07-17
      • 1970-01-01
      相关资源
      最近更新 更多