Yalnızca 0-9 arası rakamları kabul edecek ve başka hiçbir şey kabul etmeyecek bir regex'e ihtiyacım var. Harf yok, karakter yok.
Bunun işe yarayacağını düşünmüştüm:
^[0-9]
hatta
\d+
ama bunlar karakterleri kabul ediyor: ^,$,(,), vb.
Yukarıdaki her iki regex'in de işe yarayacağını düşündüm ve neden bu karakterleri kabul ettiğinden emin değilim.
DÜZENLE:
Ben de tam olarak bunu yapıyorum:
private void OnTextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
{
textbox.Text = string.Empty;
}
}
Bu, yukarıda bahsettiğim karakterlere izin veriyor.
^[0-9]regex'iniz "1A" gibi dizeler de dahil olmak üzere bir rakamla *başlayan* her şeyle eşleşir. Kısmi eşleşmeyi önlemek için, sonuna bir
$` ekleyin:
^[0-9]*$
Bu, hiçbiri dahil olmak üzere herhangi bir sayıda rakamı kabul eder. Bir veya daha fazla rakam kabul etmek için *
ibaresini +
olarak değiştirin. Tam olarak bir rakam kabul etmek için, sadece *
işaretini kaldırın.
GÜNCELLEME: IsMatch
argümanlarını karıştırdınız. Desen ilk değil, ikinci bağımsız değişken olmalıdır:
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
DİKKAT: JavaScript'te \d
, [0-9]
ile eşdeğerdir, ancak .NET'te \d
varsayılan olarak ႒ (Myanmar 2) ve ߉ (N'Ko 9) gibi egzotik ücretler de dahil olmak üzere herhangi bir Unicode ondalık basamak ile eşleşir. Uygulamanız bu karakterlerle uğraşmaya hazır değilse, [0-9]
ile devam edin (veya RegexOptions.ECMAScript bayrağını sağlayın).