区切り文字として中括弧で文字列を分割しますか?
-
05-07-2019 - |
質問
'{5}<blah>{0}</blah>'
私はそれを次のようにしたい:
['{5}', '<blah>', '{0}', '</blah>']
iは現在使用しています:________.split(/({.*?})/);
ただし、次のように中括弧が最初の文字の場合、これは失敗します。
'{0}<blah>'
次のようになります:
['', '{0}', '<blah>']
... 2ではなく3要素の配列
正規表現の何が問題になっていますか?
ありがとう!
解決
正規表現に問題はありませんが、splitの使用方法に問題があります。 Splitは、区切り文字に基づいて配列を返します。そのため、区切り文字が最初の場合、分割されたアイテムの左右にデータが表示されます。
最初の項目== ''であるかどうかを確認し、ある場合は削除します。
他のヒント
これでうまくいくはずです:
split(/((?!^)\{.*?\})/)
負の先読み-(?!^)
-は、文字列の先頭から一致が開始されない場合に成功します。
あなたはどう思いますか:
'{5}<blah>{0}</blah>'.split(/{([^}]+)}/g)
カーリーブロックの値は、アイテム1から2アイテムごとです。
所属していません StackOverflow