Javascript 正则表达式$1-9生产使用
在生产中使用“$1-$9”安全吗?在MDN上,它会对此发出警告 两者之间有区别吗Javascript 正则表达式$1-9生产使用,javascript,regex,Javascript,Regex,在生产中使用“$1-$9”安全吗?在MDN上,它会对此发出警告 两者之间有区别吗 str.replace(/[a-z]/g, $1, $2) 或 这根本无效: str.replace(/[a-z]/g, $1, $2) String.prototype.replace()只接受两个参数:正则表达式和替换。不能有两个替换字符串 $1、$2等通常仅在替换字符串中使用,例如 str.replace(/([a-z])-(\d)/g, "$1 $2") 如果要在替换字符串之外使用$1,$2,
str.replace(/[a-z]/g, $1, $2)
或
这根本无效:
str.replace(/[a-z]/g, $1, $2)
String.prototype.replace()
只接受两个参数:正则表达式和替换。不能有两个替换字符串
$1
、$2
等通常仅在替换字符串中使用,例如
str.replace(/([a-z])-(\d)/g, "$1 $2")
如果要在替换字符串之外使用$1
,$2
,则它们不是全局变量,而是用于进行匹配的RegExp
对象的属性
var re = /([a-z])-(\d)/;
re.exec(str);
console.log(re.$1, re.$2);
但没有什么理由这么做re.exec
返回包含捕获组的数组,因此您可以执行以下操作:
match = re.exec(str);
console.log(match[1], match[2]);
这是访问捕获组的符合标准的方式,因此没有充分的理由使用非标准属性。如果文档中说使用它不明智,也许您不应该使用它?您对您的用户将使用的浏览器了解多少?我们正在使用所有浏览器
match = re.exec(str);
console.log(match[1], match[2]);