我在MDN 文档中遇到了这个关于在字符串上使用 replace 方法的示例。
这是那里引用的示例
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
print(newstr);//Smith,John
我将正则表达式更改为以下内容并对其进行了测试。
var re = /(\w?)(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$1, $1");
newstr;//J, ohn Smith
var newstr1=str.replace(re,"$2, $1");
newstr1;//ohn, J Smith.
在此示例中, $1 必须是J
并且 $2 必须是。ohn Smith
当我颠倒newstr1 的$n 顺序时,它应该是'ohn Smith, J'。但事实并非如此。
我对 $1 和 $2 的理解(子字符串匹配正确)以及为什么 newstr1 不同?
感谢您的评论