使用replace和正则表达式从该字符串中删除字符

3

我正在尝试从类似于以下字符串中删除括号和'URL':

url('http://www.stackoverflow.com');

所以最终只保留 'http://www.stackoverflow.com'。

我已经成功完成的最远一步是:

var myvar = url('http://www.stackoverflow.com');
myvar = myvar.replace(/[url()]/g, '');

但显然这意味着实际域名中的任何'u'、'r'或'l'都将被删除。

我猜答案是仅删除每个字符的第一个实例。


"var myvar = "url('http://www.stackoverflow.com')";" 将其包裹在引号中以使其成为字符串。打开浏览器控制台以检查错误。 - Tushar
4个回答

3

使用捕获组。

var string = "url('http://www.stackoverflow.com')";
var url =   string.replace(/\burl\('([^()]*)'\)/g, "$1")
document.write(url) 


真正的问题在于 myvar。它不是包含 URL 的字符串,而是由函数 url() 返回的某些东西。 - Tushar
var myvar = "url('http://www.stackoverflow.com')"; myvar = myvar.replace(/[url()]/g, '');console 中执行 - Tushar
@Tushar,是的,看起来像是打错了。 - Avinash Raj
@Tushar 我正在尝试从类似这样的字符串中删除括号和"url":它只是一个字符串。 - Narendrasingh Sisodia
@NarendraSisodia 你能否请阅读此前的评论。var myvar = "url('http://www.stackoverflow.com')"; myvar = myvar.replace(/[url()]/g, '');console 中执行。 - Tushar

0

由于您只是进行一次删除,因此可以使用非正则表达式替换:

var myvar = "url('http://www.stackoverflow.com')";
myvar = myvar.replace("url('", '').replace("')", "");
document.write(myvar);

对于正则表达式迷们:

var myvar = "url('http://www.stackoverflow.com')";
myvar = myvar.replace(/^url\('|'\)$/g, '');
document.write(myvar + "<br/>");

 // or even
var myvar = "url('http://www.stackoverflow.com')";
myvar = myvar.replace(/\bUrl\('|'\)/ig, '');
document.write(myvar);


真正的问题在于 myvar。它不是包含 URL 的字符串,而是由函数 url() 返回的某些东西。 - Tushar
@Tushar:我相信这是一个原帖的打字错误,它应该是一个字符串。否则,原始代码将无法编译。 - Wiktor Stribiżew

0

尝试按照Tushar的建议使用字符串。

var myvar = "url('http://www.stackoverflow.com')";
myvar = myvar.replace(/[url()]/g, '');

0

如果您知道字符串始终具有该格式,则无需替换,只需从开头和结尾删除字符:

myvar = myvar.substr(5, myvar.length - 8);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接