2012-11-24 31 views
-1

我想在Javascript中使用preg_match。请参阅内容的一部分:Javascript中的preg_match - 从代码中获取src(非标准html代码)

<tag>lorem ipsum lorem ipsum src="http://www.example.com/files/2012/11/112_156362764.jpg" lorem ipsum lorem ipsum</tag> 

我想要得到的是在SRC - 这样的完整URL。我怎样才能做到这一点 ?

+0

还有的不是很多的情况下在这里..你想在JavaScript或使用正则表达式....? – JayC

+0

虽然JavaScript有[正则表达式](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions),但它不会*具有'preg_match()'。 –

+0

好的,那么是否有可能获得SRC中的内容?我想在JavaScript中使用任何可能的方法,在此先感谢。 – Jakub

回答

3

的preg_match是string.match在javascript:

str = '<tag>lorem ipsum lorem ipsum src="http://www.example.com/files/2012/11/112_156362764.jpg" lorem ipsum lorem ipsum</tag>' 
url = str.match(/src="(.+?)"/)[1] 
2

由于您提供没有上下文,在所有你想要的东西,我都可以工作是贴例子,非常字面的问题,所以,谓曰:

var span = document.getElementById('test'), 
    text = span.firstChild.nodeValue, 
    src = text.match(/"(.*)"/)[1]; 
console.log(src);​ 

JS Fiddle demo

这检索任何封闭"字符之间,成为唯一src="..."弦更具体的,使用方法:

var span = document.getElementById('test'), 
    text = span.firstChild.nodeValue, 
    src = text.match(/src="(.*)"/)[1]; 
console.log(src);​ 

JS Fiddle demo

和上面,用于重写一个多官能的方法,并希望更多的功能:

function retrievePropertyFromString(needle, haystack) { 
    if (!needle || !haystack) { 
     return ''; 
    } 
    else { 
     var reg = new RegExp(needle + '="(.*)"'), 
      matched = haystack.match(reg); 
     // if matched is not null AND matched has a length greater than zero: 
     // - return the match 
     // - else return an empty string 
     return matched !== null && matched.length > 0 ? matched[1] : ''; 
    } 
} 

console.log(retrievePropertyFromString('src',document.getElementById('test').firstChild.nodeValue)); 

JS Fiddle demo

参考文献: