文字列で replace メソッドを使用するMDN ドキュメントでこの例に出くわしました。
これはそこで引用された例です
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 が異なる理由は何ですか?
コメントありがとうございます