0

我正在尝试从之间的页面获取链接

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而不是需要的 url 替换。

我也尝试过newtxt = txt.replace(txt,re[0]);,但结果未定义,我是 JS 新手,因此感谢您的帮助

更新:

好的,我认为有些人不理解我正在尝试做的事情,所以我会再试一次

在页面源中有一个部分:

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

在页面本身上有一些文本hello world非常适合我想在页面上添加 url,所以我想从源中获取 url 并用hello worldurl 替换。

ievar txt = 'some text'不是 url 所在的字符串,而实际上只是页面上的文本,它将被找到的 url 替换。

4

3 回答 3

1

语法是:

string.replace(regex, replacement);

因此:

txt.replace(re, somereplacement);

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

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

re会更好:

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

这防止了不必要的匹配。

于 2013-09-24T14:32:20.763 回答
0

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

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

还要注意

var txt = 'some text';

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

于 2013-09-24T14:53:41.623 回答
0

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

正确用法是:

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

获取所有匹配项:

var matches = txt.match(re);
于 2013-09-24T14:33:42.830 回答