このような文字列ですvar d = "1[ddd]sfdsaf[ccc]fdsaf[bbbb]"; [と]の間の文字列配列を取得したいです正規表現を使用するにはどうすればよいですか? 括弧は 2 つ含まれません現在は括弧でのみ実行できます
var d = "1[ddd]sfdsaf[ccc]fdsaf[bbbb]";
小伙看你根骨奇佳,潜力无限,来学PHP伐。
リーリー
非常に簡単です。ゼロ幅アサーションを使用します:
上記ではゼロ幅の正先読みアサーションのみを使用していますが、実際にはJavaScriptに限らず、
ゼロ幅アサーションは 2 つのカテゴリと 4 つのタイプに分類されます:
(?=exp)
それ自体の位置の後の式は exp と一致する可能性がありますが、exp とは一致しないことを示します。 たとえば、 d+(?=999) は 999 で終わる数値文字列を表します (ただし、一致結果には 999 は含まれません)
d+(?=999)
(?<=exp)
それ自体の位置より前の exp に一致する式が exp に一致しないことを示します。 たとえば、 (?<=999)d+ は 999 で始まる数値文字列を表します (ただし、一致結果には 999 は含まれません)
(?<=999)d+
(?!exp)
自身の位置を示す式の後にexpを続けることはできません。 たとえばd+(?!999)は、999で終わらない数字の文字列と一致することを意味します
d+(?!999)
(?<!exp)
自身の位置を示す式の前に exp を付けることはできません。 たとえば(?<!999)d+は、999で始まらない数字の文字列と一致することを意味します
(?<!999)d+
replace を使用した @hack_qtxz の実装を参照してください。
以下は元の答えです:
@Shuke の答えは少し繰り返しなので、別の方法で書きます。
元の答えは次のとおりです:
コードを完成させるには、@cipchk を引用してください。
リーリー
非常に簡単です。ゼロ幅アサーションを使用します:
リーリー上記ではゼロ幅の正先読みアサーションのみを使用していますが、実際にはJavaScriptに限らず、
のように書くこともできます。 リーリーゼロ幅アサーションは 2 つのカテゴリと 4 つのタイプに分類されます:
ゼロ幅アサーションを転送
ゼロ幅の正の先読みアサーション
(?=exp)
それ自体の位置の後の式は exp と一致する可能性がありますが、exp とは一致しないことを示します。
たとえば、
d+(?=999)
は 999 で終わる数値文字列を表します (ただし、一致結果には 999 は含まれません)肯定的なレビュー後のゼロ幅アサーション
(?<=exp)
(JavaScriptはサポートされていません)それ自体の位置より前の exp に一致する式が exp に一致しないことを示します。
たとえば、
(?<=999)d+
は 999 で始まる数値文字列を表します (ただし、一致結果には 999 は含まれません)負のゼロ幅アサーション
ゼロ幅の否定先読みアサーション
(?!exp)
自身の位置を示す式の後にexpを続けることはできません。
たとえば
d+(?!999)
は、999で終わらない数字の文字列と一致することを意味しますゼロ幅ネガティブ ルックバック アサーション
(?<!exp)
(JavaScript はサポートされていません)自身の位置を示す式の前に exp を付けることはできません。
たとえば
(?<!999)d+
は、999で始まらない数字の文字列と一致することを意味しますreplace を使用した @hack_qtxz の実装を参照してください。
リーリー以下は元の答えです:
@Shuke の答えは少し繰り返しなので、別の方法で書きます。
リーリー元の答えは次のとおりです:
リーリーコードを完成させるには、@cipchk を引用してください。
リーリーリーリー