首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex $1-$9生产使用

Regex $1-$9生产使用
EN

Stack Overflow用户
提问于 2017-10-21 06:21:04
回答 1查看 81关注 0票数 0

在生产环境中使用‘$1-$9’安全吗?在MDN上,它会给出关于此https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/n的警告

两者之间有区别吗?

代码语言:javascript
复制
    str.replace(/[a-z]/g, $1, $2)

代码语言:javascript
复制
    regex.$1
    regex.$2
EN

回答 1

Stack Overflow用户

发布于 2017-10-21 06:36:05

这是完全无效的:

代码语言:javascript
复制
str.replace(/[a-z]/g, $1, $2)

String.prototype.replace()只有两个参数:正则表达式和替换。不能有两个替换字符串。

$1$2等通常只在替换字符串中使用,例如

代码语言:javascript
复制
str.replace(/([a-z])-(\d)/g, "$1 $2")

如果你想在替换字符串之外使用$1$2,它们不是全局变量,它们是用于进行匹配的RegExp对象的属性。

代码语言:javascript
复制
var re = /([a-z])-(\d)/;
re.exec(str);
console.log(re.$1, re.$2);

但几乎没有理由这样做。re.exec返回一个包含捕获组的数组,因此您可以执行以下操作:

代码语言:javascript
复制
match = re.exec(str);
console.log(match[1], match[2]);

这是符合标准的访问捕获组的方式,因此没有充分的理由使用非标准属性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46858113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档