Saya mencoba untuk menulis ekspresi reguler yang mengembalikan string yang berada di antara tanda kurung. Misalnya: Saya ingin mendapatkan string yang berada di antara string "(" dan ")"
I expect five hundred dollars ($500).
akan kembali
$500
Ditemukan Ekspresi Reguler untuk mendapatkan string antara dua string dalam Javascript
Tapi saya baru dengan regex. Saya tidak tahu cara menggunakan '(', ')' di regexp
javascript
regex
string
Okky
sumber
sumber
var regExp = /\(\$([^)]+)\)/;
Jawaban:
Anda perlu membuat satu set
\
tanda kurung lolos (dengan ) (yang cocok dengan tanda kurung) dan sekelompok tanda kurung biasa yang membuat grup penangkap Anda:Kerusakan:
\(
: cocok dengan tanda kurung pembuka(
: mulai menangkap grup[^)]+
: cocokkan satu atau lebih)
karakter non)
: akhir grup penangkap\)
: mencocokkan tanda kurungBerikut adalah penjelasan visual tentang RegExplained
sumber
/g
bendera global tidak akan berfungsi seperti yang diharapkan.Coba manipulasi string:
atau regex ( yang agak lambat dibandingkan dengan yang di atas )
sumber
Ported jawaban Mr_Green untuk gaya pemrograman fungsional untuk menghindari penggunaan variabel global sementara.
sumber
Solusi sederhana
Perhatikan : solusi ini dapat digunakan untuk string yang hanya memiliki string tunggal "(" dan ")" dalam pertanyaan ini.
Demo online (jsfiddle)
sumber
Untuk hanya digit setelah tanda mata uang:
\(.+\s*\d+\s*\)
harus berfungsiAtau
\(.+\)
untuk apa pun di dalam kurungsumber
)
muncul kemudian dalam string sepertiI expect five hundred dollars ($500). (but I'm going to pay).
keserakahan+
akan menangkap lebih banyak.($500)
dan(but I'm going to pay)
dicocokkan tetapi dalam dua pertandingan terpisah daripada dianggap sebagai barang yang cocok satu? Terima kasih sebelumnya!Untuk mencocokkan substring di dalam tanda kurung tidak termasuk tanda kurung dalam yang dapat Anda gunakan
pola. Lihat yang demo regex .
Dalam JavaScript, gunakan seperti
Detail pola
\(
-(
char([^()]*)
- Menangkap grup 1: kelas karakter yang dinegasikan yang cocok dengan 0 atau lebih karakter selain(
dan)
\)
-)
char.Untuk mendapatkan seluruh kecocokan, ambil nilai Grup 0, jika Anda membutuhkan teks di dalam tanda kurung, ambil nilai Grup 1.
Demo kode JavaScript terbaru (menggunakan
matchAll
):Demo kode JavaScript lama (Sesuai ES5):
Tampilkan cuplikan kode
sumber
()
dan isinya, bahkan ketika berdampingan()()
.matchAll
demo kode JavaScript baru .sumber
Alternatif:
Dimungkinkan untuk mengganti kurung dengan kurung kotak atau keriting jika Anda membutuhkannya
sumber
Akan cocok dengan angka pertama dimulai dengan $ dan diikuti oleh ')'. ')' tidak akan menjadi bagian dari pertandingan. Kode tersebut mengingatkan dengan pertandingan pertama.
Kode ini mengingatkan dengan semua kecocokan.
Referensi:
mencari "? = n" http://www.w3schools.com/jsref/jsref_obj_regexp.asp
cari "x (? = y)" https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
sumber