2012-11-24 30 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

參考文獻: