从Javascript中的字符串获取URL值

时间:2016-03-06 15:59:42

标签: javascript regex string wordpress

我试图弄清楚如何从JS中的以下字符串中提取URL。

var str = '[velocity type="youtube" id="239793212" img="http://website.com/wp-content/uploads/image-placeholder.jpg" alt="Play" color="#FFFFFF" bkg_color="transparent"]';

我想以某种方式从WordPress TinyMCE编辑器正在读取的WordPress短代码中仅提取http://website.com/wp-content/uploads/image-placeholder.jpg值。

我应该补充一点,字符串并不总是格式正确,img=""的位置会有波动。

有没有办法将此字符串解析为JSON或数组,以便我可以访问img的值?

3 个答案:

答案 0 :(得分:4)

/img="([^"]*)"/.exec(str)[1]

英文:创建一个与img部分匹配的正则表达式,将URL放在第1组中,在字符串上执行表达式后,获取第1组的内容。

表达式分解为

img="        # the string 'img="'
(            # begin group 1
  [^"]*      #   any character that is not a '"', any number of times
)            # end group 1
"            # the final double quote

相关文档:RegExp.prototype.exec() on the MDN,当然还有正则表达式的主要信息网站:http://www.regular-expressions.info/

答案 1 :(得分:1)

不是这样做的方式:

var str = '[velocity type="youtube" id="239793212" img="http://website.com/wp-content/uploads/image-placeholder.jpg" alt="Play" color="#FFFFFF" bkg_color="transparent"]';

var url = null;
str.split(' ').forEach(function(s){
  if(s.indexOf('img') > -1) {
    url = s.split("=")[1]
  }
})
// url now contains your url
console.log(url);

或作为一个班轮:

var url = str.split(' ').filter(function(s){ return s.indexOf('img') > -1})[0].split("=")[1]

答案 2 :(得分:0)

你最好的选择是正则表达式。

var regEx= /"http:\/\/.+?"/g; //If you want to extract all urls.
var imgEx= /img=".+?"/g // If you want to extract all img parameters.