1

次のように、正規表現の開始と終了をwordキャプチャ グループの境界として定義するための正しい構文は何ですか?

var $classes = $( 'body' ).attr('class'); // string 'foo bar sub-theme-home';
var regex = /sub-theme-(?=(\b))/;
var sub_theme = regex.exec($classes);
console.log(sub_theme[0]);

これは一致しており、それをキャプチャに含めて文字列置換を行って削除する必要がある場合は問題ありませんが、キャプチャ グループsub-theme-の適切な構文を理解するのに苦労しています。(?-(\b))/正の先読みのように見えsub-theme-ますが、省略された部分でhomeある必要があり、キャプチャする必要があります...助けてください。

4

3 に答える 3

5

探している文字列をキャプチャしてみませんか?

var $classes = $( 'body' ).attr('class'); // string 'foo bar sub-theme-home';
var regex = /sub-theme-(\w+)/;
var sub_theme = regex.exec($classes);
console.log(sub_theme[1]);

regex.exec(...)括弧で囲まれた部分文字列とat MDNの結果の詳細を参照してください。

于 2012-10-31T03:26:42.533 に答える
3

これを試して:

var regex = /sub-theme-(\w+)/;
于 2012-10-31T03:27:38.867 に答える
2

Javascript RegExp は、lookbehindes、名前付きキャプチャ グループなどの高度な正規表現機能の一部をサポートしていません。本 (Web 開発者のためのプロフェッショナル Javascript、第 3 版)p136:

パターンの制限

ECMAScript の正規表現サポートは完全に開発されていますが、Perl などの言語で利用できる高度な正規表現機能の一部が欠けています。次の機能は、ECMAScript 正規表現ではサポートされていません (詳細については、www.regularexpressions.info を参照してください)。

  • \A および \Z アンカー (それぞれ文字列の開始または終了に一致)
  • 後読み
  • ユニオンとインターセクションのクラス
  • アトミック グループ
  • Unicode サポート (一度に 1 文字のマッチングを除く)
  • 名前付きキャプチャ グループ
  • s (単一行) および x (フリースペース) マッチング モード
  • 条件文
  • 正規表現コメント

これらの制限にもかかわらず、ECMAScript の正規表現サポートは、ほとんどのパターン マッチング タスクを実行するのに十分強力です。

于 2012-10-31T03:33:55.440 に答える