2013-09-24 47 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'; 

与查找单引号的正则表达式不匹配,因为上面使用的单引号仅用于将变量定义为字符串 - 它们实际上并不作为字符串本身中的可匹配文本存在。