2

ここで言及されている正規表現を使用して、javascriptで同じ問題を解決しようとしています:文字列が不明な部分文字列の繰り返しかどうかを確認してください

最初の回答の正規表現を Javascriptに翻訳しました。^(.+){2,}$ しかし、期待どおりに動作しません。

'SingleSingleSingle'.replace(/^(.+){2,}$/m, '$1')  // returns 'e' instead of exptected 'Single'

私は何を見落としていますか?

4

2 に答える 2

5

が返される理由については現在のところ説明がありませんがe.任意の文字に一致し、.{2,}基本的には「任意の 2 つ以上の文字に一致する」ことを意味します。

必要なのは、後方参照を使用して、キャプチャ グループでキャプチャしたものと一致させることです。

/^(.+)\1+$/m

これは、リンク先の回答が使用することを提案しているものでもあることに気付きました: /(.+)\1+/. 式はまったく同じで、JavaScript 用に変更する必要はありません。

于 2012-11-27T19:25:26.720 に答える