JavaScriptのRegExpエンジンで可変長後読みアサーションがサポートされているかどうか疑問に思っていますか?
たとえば、文字列「[多くの空白やタブ]可変長の後ろ向き」の文字列「可変長」を一致させようとしています。このようなものがありますが、さまざまな正規表現テスターではうまくいきません。 :
^(?<=[ \t]+).+(?= lookbehind)
それが違法なパターンである場合、それに対する良い回避策は何でしょうか?ありがとう!
JavaScriptのRegExpエンジンで可変長後読みアサーションがサポートされているかどうか疑問に思っていますか?
たとえば、文字列「[多くの空白やタブ]可変長の後ろ向き」の文字列「可変長」を一致させようとしています。このようなものがありますが、さまざまな正規表現テスターではうまくいきません。 :
^(?<=[ \t]+).+(?= lookbehind)
それが違法なパターンである場合、それに対する良い回避策は何でしょうか?ありがとう!
Javascriptには後読みがまったくありません。Steven Levithanは、それを模倣するためのいくつかの発言を書いています。これは役立つかもしれません。
私はあなたの例を完全には理解していません、なぜならこれは法案に合うように思われるからです:
/^\s+(.+)lookbehind$/
...これは、1つ以上の空白文字、それに続く1つ以上の任意の文字(キャプチャグループ内)、それに続く「lookbehind」という単語に一致します。このように使用されます:
var str = " variable length lookbehind";
var match = /^\s+(.+)lookbehind$/.exec(str);
この配列を生成します:
match[0]: | variable length lookbehind|
match[1]: |variable length|
Javascriptでは、配列の最初のエントリは一致した文字列全体であり、後続のエントリはキャプチャグループです。
しかし、あなたは明らかに正規表現をよく理解しているので、それがあなたが探しているものかどうかはわかりません...
この一般的な領域で注意すべき点は、JavascriptでのRegExpエンジンの実装の多くが正しく処理されないことです\s
(ASCII範囲より上の空白文字の一致を見逃します)。ここでS_REGEXP_WHITESPACE_CHARACTER_CLASS_BUGGYテストを参照してください。
Javascript正規表現エンジンは後読みをサポートしていません。先読みのみがサポートされています。ここで模倣ソリューションを見つけることができます:http: //blog.stevenlevithan.com/archives/mimic-lookbehind-javascript
より高速なJavaScriptトリムを参照してください
トリムを実行できるさまざまな方法を示し(いずれも後読みを必要としません)、さまざまなアプローチの速度も比較します。最終目標に先頭の空白の削除が含まれている場合は、それを複数の操作に分割することを恐れないでください。
問題に直面したときに、「わかっている、正規表現を使用する」と考える人もいます。今、彼らは2つの問題を抱えています-ジェイミー・ザウィンスキー
これが正規表現で役立つかどうかはわかりませんが、空白を削除したい場合は、トリム機能を使用できます
function trimAll(sString) {
while (sString.substring(0, 1) == ' ') {
sString = sString.substring(1, sString.length);
}
while (sString.substring(sString.length - 1, sString.length) == ' ') {
sString = sString.substring(0, sString.length - 1);
}
return sString;
}
それ以外の場合、文字列の存在を確認したい場合は 、StackOverflow.comでindexOfIndexOfを使用できます