Jadi misalnya:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
Tapi ini tentu saja tidak berhasil :) Apakah ada cara untuk melakukan ini?
javascript
regex
variables
Adam
sumber
sumber
Jawaban:
Memperbarui
Per beberapa komentar, penting untuk dicatat bahwa Anda mungkin ingin keluar dari variabel jika ada potensi konten berbahaya (mis. Variabel tersebut berasal dari input pengguna)
Pembaruan ES6
Pada 2019, ini biasanya ditulis menggunakan string templat, dan kode di atas telah diperbarui. Jawaban aslinya adalah:
sumber
regex
ekspresi/\w+\//i
menjadinew RegExp("\\w+/", "i")
Anda dapat menggunakan objek RegExp:
Maka Anda dapat membangun
regexstring
dengan cara apa pun yang Anda inginkan.Anda dapat membaca lebih lanjut di sini .
sumber
Untuk membangun ekspresi reguler dari variabel dalam JavaScript, Anda harus menggunakan
RegExp
konstruktor dengan parameter string.tentu saja, ini adalah contoh yang sangat naif. Diasumsikan bahwa
input
telah keluar dengan benar untuk ekspresi reguler. Jika Anda berurusan dengan input pengguna, atau hanya ingin membuatnya lebih mudah untuk mencocokkan karakter khusus, Anda harus keluar dari karakter khusus :sumber
ReGeX
teks. Jadi saya menggunakan:return new RegExp(input, flags);
\\
mewakili satu\
karakter,$&
adalah substring yang cocok .jika Anda menggunakan literal template es6 adalah sebuah opsi ...
sumber
^[^\s]{${4},${32}}$
); export const validatePassword = value => value.match (newRegExp); `` `Anda selalu dapat memberikan ekspresi reguler sebagai string, yaitu
"ReGeX" + testVar + "ReGeX"
. Anda mungkin harus melarikan diri beberapa karakter di dalam string Anda (misalnya, kutipan ganda), tetapi untuk sebagian besar kasus itu setara.Anda juga dapat menggunakan
RegExp
konstruktor untuk meneruskan flag ( lihat dokumen ).sumber
Anda dapat membuat ekspresi reguler di JS dalam salah satu dari dua cara:
/ab{2}/g
new RegExp("ab{2}", "g")
.Literal ekspresi reguler adalah konstan, dan tidak dapat digunakan dengan variabel. Ini dapat dicapai dengan menggunakan konstruktor. Struktur konstruktor RegEx adalah
Anda dapat menanamkan variabel sebagai bagian dari regularExpressionString. Sebagai contoh,
Ini akan cocok dengan penampilan pola apa pun
cdcdcd
.sumber
Berikut adalah fungsi yang tidak berguna yang mengembalikan nilai yang dibungkus oleh karakter tertentu. :)
jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/
sumber
jawaban yang diterima tidak bekerja untuk saya dan tidak mengikuti contoh MDN
lihat bagian 'Keterangan' di tautan di atas
Saya akan pergi dengan yang berikut ini bekerja untuk saya:
sumber
Ini hanya perlu menyiapkan variabel string terlebih dahulu dan kemudian mengonversinya ke RegEx.
sebagai contoh:
Anda ingin menambahkan
minLength
danMaxLength
dengan variabel ke RegEx:sekarang jika Anda mengubah nilai
MaxLength
atauMinLength
, Ini akan berubah di semua RegExs.Semoga bermanfaat. Maaf tentang bahasa Inggris saya.
sumber