2013-09-24 74 views
0

我想從一個頁面的JavaScript的innerHTML

url: '',

之間的聯繫的preg_match我已經嘗試了一些不同的解決方案通過谷歌找到,但我已經拿到了最接近的是這

function pregmatch() { 
    var re = new RegExp("url: '(.*)',", "g"),// the regex 
     txt = 'some text'; // the text on page to be replaced by url 
    newtxt = txt.replace(txt,re); // replace text with found url 
    document.body.innerHTML = document.body.innerHTML.replace(txt,newtxt); 
} 
pregmatch(); 

但這只是將some text替換爲正則表達式/url: '(.*)',/g而不是所需的url。

我也試過newtxt = txt.replace(txt,re[0]);但回來爲未定義,我是一個新手JS所以任何幫助表示讚賞

UPDATE:

好吧,我覺得有些失明白我想這樣做將再次嘗試

在網頁源有一章節:

url: 'http://somedomain.com/b3a4f5d2b725a8d', 

在頁面本身有一些文字hello world,這是完美的位置,我想在網頁上添加網址,所以我想從源頭抓取網址,並用網址替換hello world

ie var txt = 'some text'不是來自url的字符串,而是事實上只是頁面上的文本,將被找到的url替換。

+0

如果你想獲得鏈接,你爲什麼使用替換而不是匹配? [/ url:'(。*?)',/)[1]' – SmokeyPHP

+0

我確實說過我是JS新手,實際上我是新手JS新手。 –

回答

1

的語法是:

string.replace(regex, replacement); 

這樣:

txt.replace(re, somereplacement); 

但既然你想獲得一個網址,你可能會使用.match會更好:

url = txt.match(re)[1]; 

和你re會更好:

var re = new RegExp("url: '(.*?)',", "g"); 

這可以防止超過必要的匹配。

0

您正在用正則表達式替換字符串txt中的正則表達式匹配項。

正確的用法是:

var newtxt = txt.replace(re, "something_to_replace_with"); 

獲得所有比賽:

var matches = txt.match(re); 
0

沒有明確定義的正則表達式對象:

var reg = /url: '(.*?)',/; 
var txt = "url: 'some text',"; 
if (reg.test(txt)) 
    alert(txt.match(reg)[1]); 

另外要注意,

var txt = 'some text'; 

與查找單引號的正則表達式不匹配,因爲上面使用的單引號僅用於將變量定義爲字符串 - 它們實際上並不作爲字符串本身中的可匹配文本存在。