Apa cara terbaik untuk melakukan pemeriksaan alfanumerik pada suatu INPUT
bidang JSP
? Saya telah melampirkan kode saya saat ini
<script type="text/javascript">
function validateCode(){
var TCode = document.getElementById('TCode').value;
for(var i=0; i<TCode.length; i++)
{
var char1 = TCode.charAt(i);
var cc = char1.charCodeAt(0);
if((cc>47 && cc<58) || (cc>64 && cc<91) || (cc>96 && cc<123))
{
}
else {
alert('Input is not alphanumeric');
return false;
}
}
return true;
}
javascript
validation
t0mcat
sumber
sumber
Jawaban:
Anda dapat menggunakan regex ini
/^[a-z0-9]+$/i
sumber
""
) tidak boleh cocok.ñ
tidak termasuk dalam pola namun karakter UTF-8 sepenuhnya valid.charCodeAt()
. Lihat jsPerf dan jawaban saya di bawah .Kecenderungan asli penanya untuk menggunakan
str.charCodeAt(i)
tampaknya lebih cepat daripada alternatif ekspresi reguler. Dalam pengujian saya di jsPerf , opsi RegExp berkinerja 66% lebih lambat di Chrome 36 (dan sedikit lebih lambat di Firefox 31).Berikut adalah versi pembersihan dari kode validasi asli yang menerima string dan mengembalikan
true
ataufalse
:Tentu saja, mungkin ada pertimbangan lain, seperti keterbacaan. Ekspresi reguler satu baris jelas lebih cantik untuk dilihat. Tetapi jika Anda sangat memperhatikan kecepatan, Anda mungkin ingin mempertimbangkan alternatif ini.
sumber
Periksa dengan regex.
Javascript regexen tidak memiliki kelas karakter POSIX, jadi Anda harus menulis rentang karakter secara manual:
Di sini
^
berarti awal string dan$
berarti akhir string, dan[0-9a-z]+
berarti satu atau lebih karakter dari0
ke9
ATAU daria
kez
.Informasi lebih lanjut tentang Javascript regexen di sini: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions
sumber
/^[a-z0-9]+$/i
dan ini akan mencakup huruf besar dan kecilAnda tidak perlu melakukannya satu per satu. Lakukan saja tes untuk semua itu bukan alfanumerik. Jika ditemukan, validasi gagal.
Jika ada setidaknya satu kecocokan dari non alfa numerik, itu akan
return false
.sumber
Saya akan membuat metode prototipe String:
Kemudian, penggunaannya adalah:
sumber
Lebih lanjut, artikel ini juga membantu memahami validasi alfanumerik JavaScript.
sumber
Permisi semua, tidak ada kontroversi. Tetapi agar komunitas dapat tumbuh seperti yang telah menumbuhkan saya di tahun-tahun ini, ada baiknya membuat beberapa catatan.
String alfanumerik yang sebenarnya adalah seperti
"0a0a0a0b0c0d"
dan bukan seperti"000000"
atau"qwertyuio"
.Semua jawaban yang saya baca di sini, dikembalikan
true
dalam kedua kasus. Dan maafkan saya, IMHO, ini tidak benar .Jika saya ingin memeriksa apakah
"00000"
string saya alfanum, jawaban "manusia" saya tidak diragukan lagi SALAH.Mengapa? Sederhana. Saya tidak dapat menemukan karakter huruf apa pun. Jadi, adalah string numerik sederhana
[0-9]
.Di sisi lain, jika saya ingin memeriksa
"abcdefg"
string saya, jawaban "manusia" saya malah SALAH. Saya tidak melihat angka, jadi bukan alfanumerik. Hanya alfa[a-zA-Z]
.Jawaban Michael Martin-Smucker telah mencerahkan.
Namun dia bertujuan untuk mencapai kinerja yang lebih baik daripada regex. Ini benar, menggunakan cara tingkat rendah akan menghasilkan kinerja yang lebih baik. Tapi hasilnya sama saja. String
"0123456789"
(hanya numerik),"qwertyuiop"
(hanya alfa) dan"0a1b2c3d4f4g"
(alfanumerik) ditampilkanTRUE
sebagai alfanumerik./^[a-z0-9]+$/i
Cara regex yang sama . Alasan mengapa regex tidak berfungsi sesederhana itu. Sintaksnya[]
menunjukkan atau , bukan dan . Jadi, jika hanya numerik atau hanya huruf, regex mengembalikantrue
.Tapi, jawaban Michael Martin-Smucker tetap mencerahkan. Untuk saya. Ini memungkinkan saya untuk berpikir di "level rendah", untuk membuat fungsi nyata yang memproses string alfanumerik dengan jelas. Saya menyebutnya seperti fungsi relatif PHP
ctype_alnum
( edit 2020-02-18: Di mana, bagaimanapun, ini memeriksa ATAU dan bukan DAN ).Berikut kodenya:
... dan inilah DEMO
Saya datang ke diskusi ini karena saya mencari alternatif dalam javascript untuk fungsi PHP. Saya tidak menemukan jawaban "ready-to-go", tetapi seperti yang sering terjadi di Stackoverflow, konsep pengetahuan dan perbandingan satu sama lain adalah sesuatu yang luhur, yang membuat Anda berpikir tentang jawaban seseorang dan menemukan bersama solusi Anda. mencari, tetapi Anda tidak berpikir Anda mengetahuinya.
Dan bagikan!
Terbaik
Oscar
sumber
return isNumeric || isAlpha;
adalah alphaNumeric. Di atas mungkin bermanfaat bagi beberapa orang.Dalam loop yang ketat, mungkin lebih baik untuk menghindari regex dan hardcode karakter Anda:
sumber
Untuk memeriksa apakah input_string adalah alfanumerik, cukup gunakan:
sumber