innerHTML的javascript preg_match

时间:2013-09-24 14:21:48

标签: javascript regex

我试图从

之间的页面获取链接

url: '',

我尝试过通过谷歌找到的一些不同的解决方案,但我最接近的是这个

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,而不是所需内容的网址。

我也试过了newtxt = txt.replace(txt,re[0]);但是这个回复是未定义的,我是一个JS新手所以感谢任何帮助

更新

好的,我觉得有些想念我想要做的事情会再次尝试

在页面源中有一个部分:

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

在页面本身上有一些文本hello world,它非常适合我要在页面上添加网址的位置,因此我想从源代码中获取网址并将hello world替换为网址。

ie var txt = 'some text'不是url所在的字符串,而是页面上的文本,将替换为找到的url。

3 个答案:

答案 0 :(得分:1)

语法为:

string.replace(regex, replacement);

因此:

txt.replace(re, somereplacement);

但是既然你想获得一个网址,最好使用.match

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

你的re会更好:

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

这可以防止超出必要的匹配。

答案 1 :(得分:0)

您正在使用正则表达式替换字符串txt中正则表达式的匹配项。

正确用法是:

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

获得所有比赛:

var matches = txt.match(re);

答案 2 :(得分:0)

没有明确定义正则表达式对象:

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

还要注意

var txt = 'some text';

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