Saya memiliki string:
var string = "aaaaaa<br />† bbbb<br />‡ cccc"
Dan saya ingin membagi string ini dengan pembatas yang <br />
diikuti dengan karakter khusus.
Untuk melakukan itu, saya menggunakan ini:
string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);
Saya mendapatkan apa yang saya butuhkan, kecuali bahwa saya kehilangan pembatas. Ini contohnya: http://jsfiddle.net/JwrZ6/1/
Bagaimana cara mempertahankan pembatas?
javascript
regex
Miloš
sumber
sumber
var delim = "<br/>";
?Jawaban:
Menggunakan lookahead (positif) sehingga ekspresi reguler menegaskan bahwa karakter khusus ada, tetapi tidak benar-benar cocok:
Lihat aksinya:
sumber
0
di akhir setiap stringSaya mengalami masalah yang serupa tetapi sedikit berbeda. Bagaimanapun, berikut adalah contoh dari tiga skenario berbeda untuk menyimpan deliminator.
Peringatan: Yang keempat hanya akan berfungsi untuk memisahkan karakter tunggal. ConnorsFan menghadirkan alternatif :
sumber
g
akhir.match
solusi tidak serakah untuk contoh berikut:"11、22、33".match(/.*?、|.+$/g)
->["11、", "22、", "33"]
./g
Pengubah catatan sangat penting untuk pertandingan.Jika Anda membungkus pembatas dalam tanda kurung, itu akan menjadi bagian dari larik yang dikembalikan.
Bergantung pada bagian mana Anda ingin tetap mengubah subgrup mana yang Anda cocokkan
Anda dapat memperbaiki ekspresi dengan mengabaikan kasus huruf string.split (/ () & #? [A-z0-9] +; / gi);
Dan Anda dapat mencocokkan untuk grup yang ditentukan sebelumnya seperti ini:
\d
sama dengan[0-9]
dan\w
sama[a-zA-Z0-9_]
. Artinya ekspresi Anda bisa terlihat seperti ini.Ada Referensi Ekspresi Reguler yang bagus di JavaScriptKit .
sumber
jawabnya disini juga JavaScript Split Regular Expression pertahankan pembatasnya
gunakan pola lookahead (? = pattern) pada contoh regex
ini akan memberi Anda hasil sebagai berikut.
Bisa juga langsung dibelah
memberikan hasil yang sama
sumber
Saya membuat modifikasi pada jawaban jichi, dan memasukkannya ke dalam fungsi yang juga mendukung banyak huruf.
jawaban jichi Metode ke-3 tidak akan berfungsi dalam fungsi ini, jadi saya mengambil metode ke-4, dan menghapus ruang kosong untuk mendapatkan hasil yang sama.
edit: metode kedua yang mengecualikan array untuk memisahkan char1 atau char2
pemakaian:
sumber
Fungsi ekstensi membagi string dengan substring atau RegEx dan pembatas diletakkan sesuai dengan parameter kedua di depan atau di belakang.
Ujian:
sumber
Saya telah menggunakan ini:
Kecuali Anda tidak boleh main-main
String.prototype
, jadi inilah versi fungsinya:Jadi Anda bisa melakukan:
Dan Anda akan mendapatkan:
sumber