私はこの正規表現を持っています:
([a-z]+)(?:\.)
.
Javascript で this: のように使用すると、最終的に次のような
"test.thing.other".split(/([a-z]+)(?:\.)/);
配列が得られます:
["", "test", "", "thing", "other"]
。
最初と 3 番目の要素がその配列に入れられている理由がわかりません。誰かが私が間違っていることを教えてもらえますか?
私はこの正規表現を持っています:
([a-z]+)(?:\.)
.
Javascript で this: のように使用すると、最終的に次のような
"test.thing.other".split(/([a-z]+)(?:\.)/);
配列が得られます:
["", "test", "", "thing", "other"]
。
最初と 3 番目の要素がその配列に入れられている理由がわかりません。誰かが私が間違っていることを教えてもらえますか?
あなたの質問とコメント「Capture az until a period」に基づいて、次のように String.match を使用する必要があると思います。
arr = "test.thing.other".match(/[a-z]+(?=\.)/g);
与えます:
["test", "thing"]
括弧が理由です。MDNstring.split
の発言は次のとおりです。
がキャプチャ用括弧を含む正規表現である場合
separator
、セパレータが一致するたびに、キャプチャ用括弧の結果 (未定義の結果を含む) が出力配列に結合されます。
彼らはまた、次のように警告しています。
ただし、すべてのブラウザーがこの機能をサポートしているわけではありません。
したがって、この結果は矛盾している可能性があります。式の内容で分割するだけの場合は、括弧を削除します。
>> 'test.thing.other'.split(/[a-z]+\./)
["", "", "other"]
これもあなたが望むものではないかもしれませんが、あなたの表現から直感的に期待される結果です。
ドットで分割したい場合は、正規表現で正確にドットを指定する必要があります。
>> 'test.thing.other'.split(/\./)
["test", "thing", "other"]