0

文字列で 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 が異なる理由は何ですか?

コメントありがとうございます

4

1 に答える 1