Saya perlu regex yang hanya akan menerima angka dari 0-9 dan tidak ada yang lain. Tidak ada surat, tidak ada karakter.
Saya pikir ini akan bekerja:
^[0-9]
atau bahkan
\d+
tapi ini menerima karakter : ^,$,(,), dll
Saya berpikir bahwa kedua regexes di atas akan melakukan trik dan I'm tidak yakin mengapa orang-orang yang menerima karakter.
EDIT:
Ini adalah persis apa yang saya lakukan:
private void OnTextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
{
textbox.Text = string.Empty;
}
}
Hal ini memungkinkan karakter yang saya sebutkan di atas.
Anda regex ^[0-9]
pertandingan apa-apa awal dengan digit, termasuk string seperti "1A". Untuk menghindari parsial pertandingan, menambahkan $
sampai akhir:
^[0-9]*$
Ini menerima sejumlah digit, termasuk tidak ada. Untuk menerima satu atau lebih digit, mengubah *
ke +
. Untuk menerima tepat satu digit, hanya menghapus *
.
UPDATE: Anda bercampur argumen untuk IsMatch
. Pola harus menjadi argumen kedua, bukan yang pertama:
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
Hati-HATI: Dalam JavaScript, \d
setara dengan [0-9]
, tapi di .NET, \d
secara default setiap pertandingan Unicode digit desimal, termasuk eksotis tarif seperti ႒ (Myanmar 2) dan ߉ (N'Ko 9). Kecuali jika aplikasi anda siap untuk berurusan dengan karakter ini, tetap dengan [0-9]
(atau pasokan [RegexOptions.ECMAScript](https://msdn.microsoft.com/en-us/library/yd1hzczs(v=vs. 110).aspx#Anchor_10) bendera).