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