Mencoba memeriksa masukan terhadap ekspresi reguler.
Bidang hanya boleh mengizinkan karakter alfanumerik, tanda hubung dan garis bawah dan TIDAK boleh memberi spasi.
Namun, kode di bawah ini mengizinkan spasi.
Apa yang saya lewatkan?
var regexp = /^[a-zA-Z0-9\-\_]$/;
var check = "checkme";
if (check.search(regexp) == -1)
{ alert('invalid'); }
else
{ alert('valid'); }
javascript
regex
Tom
sumber
sumber
Jawaban:
Tidak, tidak. Namun, itu hanya akan cocok pada input dengan panjang 1. Untuk input dengan panjang lebih dari atau sama dengan 1, Anda memerlukan
+
kelas karakter berikut:var regexp = /^[a-zA-Z0-9-_]+$/; var check = "checkme"; if (check.search(regexp) === -1) { alert('invalid'); } else { alert('valid'); }
Perhatikan bahwa baik
-
(dalam hal ini) maupun_
kebutuhan untuk melarikan diri.sumber
Anda tidak boleh menggunakan String.match tetapi RegExp.prototype.test (yaitu
/abc/.test("abcd")
) sebagai ganti String.search () jika Anda hanya tertarik pada nilai boolean. Anda juga perlu mengulang kelas karakter Anda seperti yang dijelaskan dalam jawaban oleh Andy E:var regexp = /^[a-zA-Z0-9-_]+$/;
sumber
RegExp.prototype.test
metode ini jika Anda hanya tertarik pada boolean.Sintaks ini sedikit lebih ringkas daripada jawaban yang telah diposting ke poin ini dan mencapai hasil yang sama:
let regex = /^[\w-]+$/;
sumber
Mendapat kesalahan bodoh. Jadi posting di sini, jika ada yang merasa berguna
-\._
- Berarti tanda hubung, titik dan garis bawah\.-_
- berarti semua tanda dalam rentang dari titik hingga garis bawahsumber
Jangan lepas dari garis bawah. Mungkin menyebabkan kerusakan.
sumber
\_
penyebab masalah, di JavaScript atau jenis regex lainnya.Coba ini
"[A-Za-z0-9_-]+"
Harus mengizinkan garis bawah dan tanda hubung
sumber
coba yang ini, ini berfungsi dengan baik untuk saya.
"^([a-zA-Z])[a-zA-Z0-9-_]*$"
sumber