提取元素内的所有有效URL字符串(JavaScript)

时间:2014-01-15 01:24:22

标签: javascript jquery regex string substring

这可能很容易但我对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;

1 个答案:

答案 0 :(得分: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"]