使用jQuery替换正则表达式匹配的文本

3
这真让我疯狂,为什么这个不起作用呢?
var name = data.match(/first-([A-Za-z0-9-]+)/g).replace('first-', '');

我想用 joe 替换 first-joe

我还尝试过

var name = data.match(/first-([A-Za-z0-9-]+)/g);
var name = name.replace('first-', '');

但是它无法正常工作。

然而,当我警报名称时,我得到了 first-joe

这是什么原因,我该如何修复?

谢谢。

3个回答

3
尝试使用以下内容替代:
var name = data.replace(/first-([A-Za-z0-9-]+)/g, '$1');

数据是GET请求的内容,当我这样做时,它只会弹出源代码。 - Roland Collins

1

match/g 结合使用会返回一个匹配数组(不包括括号内的子字符串),因此您需要逐个进行 replace。如果您知道只有一个匹配项,请使用 data.match(/first-([A-Za-z0-9-]+)/)[1] 提取括号内的子字符串。


1
我不确定为什么你要先调用match。为什么不直接执行以下任意一种操作呢?
var name1 = data.replace('first-', '');
var name2 = data.replace(/^first-/, ''); //In case somebodys got a name containing first-.

这是因为你的数据变量中包含的内容不仅仅是字符串 'first-joe' 吗?


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