Douglas Crockford による JavaScript プログラミング言語シリーズを読んでいて、彼のトリム関数で次の式に出くわしました。
String.prototype.trim = function () {
return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
私はそれが何をするかを理解していますが、世界ではどのように機能しますか?
Douglas Crockford による JavaScript プログラミング言語シリーズを読んでいて、彼のトリム関数で次の式に出くわしました。
String.prototype.trim = function () {
return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
私はそれが何をするかを理解していますが、世界ではどのように機能しますか?
正規表現をステップ実行できるexpressoなどのツールを取得する必要があります...
^\s*
- 行または文字列の先頭の空白、任意の回数の繰り返し
(\S*(\s+\S+)*)
- あなたの例ではグループ番号 "$1" をキャプチャします。
\S*(\s+\S+)*
- 空白以外、任意の数の繰り返し
(\s+\S+)*
- 別のキャプチャ グループ。1 つ以上の繰り返しがある空白と、1 つ以上の繰り返しがある空白以外のものを探します。
\s*$
- 行または文字列の末尾にある任意の数の空白。
Expresso での表示は...