Potrebujem regex, ktorý bude akceptovať iba číslice od 0 do 9 a nič iné. Žiadne písmená, žiadne znaky.
Myslel som si, že to bude fungovať:
^[0-9]
alebo dokonca
\d+
ale tieto znaky akceptujú : ^,$,(,) atď.
Myslel som si, že oba vyššie uvedené regexy by to zvládli a nie'som si istý, prečo akceptuje tieto znaky.
EDIT:
Presne to robím:
private void OnTextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
{
textbox.Text = string.Empty;
}
}
To umožňuje znaky, ktoré som uviedol vyššie.
Váš regex ^[0-9]
zodpovedá všetkému, čo začína číslicou, vrátane reťazcov ako "1A". Ak chcete zabrániť čiastočnej zhode, pridajte na koniec znak $
:
^[0-9]*$
Toto akceptuje ľubovoľný počet číslic vrátane žiadnej. Ak chcete akceptovať jednu alebo viac číslic, zmeňte *
na +
. Ak chcete prijať presne jednu číslicu, odstráňte znak *
.
DOPLNENIE: Zamenili ste argumenty pre IsMatch
. Vzor by mal byť druhým argumentom, nie prvým:
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
UPOZORNENIE: V JavaScripte je \d
ekvivalentné [0-9]
, ale v .NET sa \d
štandardne zhoduje s ľubovoľnou Unicode desatinnou číslicou vrátane exotických taríf ako ႒ (Myanmar 2) a ߉ (N'Ko 9). Ak vaša aplikácia nie je pripravená na prácu s týmito znakmi, zostaňte pri [0-9]
(alebo zadajte príznak RegexOptions.ECMAScript).