Rentetan jenis inivar d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】";
Saya mahu mendapatkan tatasusunan rentetan antara [dan]
Bagaimana untuk menggunakan ungkapan biasa?
Tidak termasuk dua kurungan
Pada masa ini saya hanya boleh melakukannya dengan kurungan
var d = "1【ddd】sfdsaf【ccc】fdsaf【bbbb】";
var patt = /\【[^\】]+\】/g;
d.match(patt)
Sangat mudah, gunakan penegasan lebar sifar:
Hanya penegasan pandangan positif lebar sifar digunakan di atas, sebenarnya, jika ia tidak terhad kepada JavaScript, ia juga boleh ditulis sebagai
Ketegasan lebar sifar dibahagikan kepada dua kategori dan empat jenis:
Penegasan lebar sifar ke hadapan
Pernyataan pandangan ke hadapan positif lebar sifar(?=exp)
(?=exp)
表示自身位置之后可以匹配到exp的表达式,而不匹配exp。
比如
d+(?=999)
表示以999结尾的数字串(但是匹配结果不包含999)零宽度正回顾后发断言
(?<=exp)
(JavaScript不支持)表示自身位置之前可以匹配到exp的表达式,而不匹配exp。
比如
(?<=999)d+
表示以999开头的数字串(但是匹配结果不包含999)负向零宽断言
零宽度负预测先行断言
(?!exp)
表示自身位置之后不能是exp的表达式。
比如
d+(?!999)
表示匹配不是以999结尾的数字串零宽度负回顾后发断言
(?<!exp)
(JavaScript不支持)表示自身位置之前不能是exp的表达式。
🎜Pernyataan positif lebar sifar比如
(?<!999)d+
Menunjukkan bahawa ungkapan selepas kedudukannya sendiri boleh memadankan exp, tetapi tidak sepadan dengan exp.Contohnya,
d+(?=999)
mewakili rentetan nombor yang berakhir dengan 999 (tetapi hasil yang sepadan tidak termasuk 999)(?<=exp)
(tidak disokong oleh JavaScript) 🎜Menunjukkan bahawa ungkapan yang boleh memadankan exp sebelum kedudukannya sendiri tidak sepadan dengan exp.Contohnya,
(?<=999)d+
mewakili rentetan angka bermula dengan 999 (tetapi hasil padanan tidak termasuk 999)🎜 🎜Penegasan lebar sifar negatif🎜 🎜Pernyataan pandangan negatif lebar sifar(?!exp)
🎜Ungkapan yang menunjukkan kedudukannya sendiri tidak boleh diikuti oleh exp.Sebagai contoh,
d+(?!999)
bermaksud memadankan rentetan nombor yang tidak berakhir dengan 999🎜 🎜Pernyataan lihat balik negatif lebar sifar(?<!exp)
(tidak disokong oleh JavaScript) 🎜Ungkapan yang menunjukkan kedudukannya sendiri tidak boleh didahului oleh exp.Sebagai contoh,
(?<!999)d+
bermaksud memadankan rentetan nombor yang tidak bermula dengan 999🎜Rujukan @hack_qtxz Dilaksanakan menggunakan replace.
Berikut ialah jawapan asal:
dan @Shuke Jawapannya agak berulang, jadi saya menulisnya dengan cara yang berbeza.
Berikut ialah jawapan asal:
rrreeePetikan @cipchk untuk melengkapkan kod untuk anda.