Bagaimana saya bisa memvalidasi string menggunakan Ekspresi Reguler untuk hanya mengizinkan karakter alfanumerik di dalamnya?
(Saya juga tidak ingin mengizinkan spasi).
Gunakan ekspresi berikut:
^[a-zA-Z0-9]*$
yaitu:
using System.Text.RegularExpressions;
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString)) {
...
}
Di .NET 4.0 Anda dapat menggunakan LINQ:
yourText.All
akan berhenti mengeksekusi dan mengembalikanfalse
pertama kalinyachar.IsLetterOrDigit
laporanfalse
sejak kontrakAll
tidak dapat dipenuhi maka.Catatan! jawaban ini tidak memeriksa alfanumerik secara ketat (yang biasanya adalah AZ, az dan 0-9). Jawaban ini memungkinkan karakter lokal suka
åäö
.Perbarui 2018-01-29
Sintaks di atas hanya berfungsi jika Anda menggunakan metode tunggal yang memiliki argumen tunggal dengan tipe yang benar (dalam kasus ini
char
).Untuk menggunakan banyak kondisi, Anda perlu menulis seperti ini:
sumber
char.IsLetterOrDigit('ก')
akan kembalitrue
. csharppad.com/gist/f96a6062f9f8f4e974f222ce313df8caAnda dapat melakukannya dengan mudah dengan fungsi ekstensi daripada regex ...
Per komentar :) ...
sumber
char.IsLetterOrDigit
sebagai gantinya IsLetter + IsNumberSementara saya pikir solusi berbasis regex mungkin adalah cara yang saya lakukan, saya akan tergoda untuk merangkum ini dalam sebuah tipe.
Sekarang, ketika Anda membutuhkan string yang divalidasi, Anda dapat membuat tanda tangan metode memerlukan AlphaNumericString, dan tahu bahwa jika Anda mendapatkannya, itu valid (selain null). Jika seseorang mencoba mengirimkan string yang tidak divalidasi, itu akan menghasilkan kesalahan kompilator.
Anda bisa menjadi lebih menarik dan mengimplementasikan semua operator kesetaraan, atau cast eksplisit ke AlphaNumericString dari string ol biasa, jika Anda peduli.
sumber
static public implicit operator string
bagiannyaSaya perlu memeriksa AZ, az, 0-9; tanpa regex (meskipun OP meminta regex).
Memadukan berbagai jawaban dan komentar di sini, dan diskusi dari https://stackoverflow.com/a/9975693/292060 , ini menguji huruf atau angka, menghindari huruf bahasa lain, dan menghindari angka lain seperti karakter pecahan.
sumber
^\w+$
akan memperbolehkana-zA-Z0-9_
Gunakan
^[a-zA-Z0-9]+$
untuk melarang garis bawah.Perhatikan bahwa keduanya memerlukan string yang tidak boleh kosong. Menggunakan
*
alih-alih+
mengizinkan string kosong.sumber
^[\w-]+$
Untuk memeriksa apakah string tersebut merupakan kombinasi huruf dan angka, Anda dapat menulis ulang jawaban @jgauffin sebagai berikut menggunakan .NET 4.0 dan LINQ:
sumber
Jawaban yang sama seperti di sini .
Jika Anda menginginkan
A-z 0-9
pemeriksaan ASCII non-regex , Anda tidak dapat menggunakannyachar.IsLetterOrDigit()
karena itu menyertakan karakter Unicode lainnya.Apa yang dapat Anda lakukan adalah memeriksa rentang kode karakter.
Berikut ini sedikit lebih bertele-tele, tetapi ini untuk kemudahan pemahaman daripada untuk kode golf.
sumber
Berdasarkan jawaban cletus Anda dapat membuat ekstensi baru.
sumber
Saya menyarankan untuk tidak bergantung pada kode siap pakai dan built-in dalam kerangka .NET, coba berikan solusi baru .. inilah yang saya lakukan ..
sumber
char.IsNumber()
metode karena itu adalah kode yang sudah dibuat sebelumnya?