Ik heb een regex nodig die alleen cijfers van 0-9 accepteert en niets anders. Geen letters, geen tekens.
Ik dacht dat dit zou werken:
^[0-9]
of zelfs
\d+
maar deze accepteren de tekens : ^,$,(,), etc
Ik dacht dat beide regexes hierboven zouden werken en ik weet niet zeker waarom het deze karakters accepteert.
BEWERKEN:
Dit is precies wat ik doe:
private void OnTextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", textbox.Text))
{
textbox.Text = string.Empty;
}
}
Hiermee zijn de tekens toegestaan die ik hierboven noemde.
Antwoord 1, autoriteit 100%
Je regex ^[0-9]
komt overeen met alles dat begint met een cijfer, inclusief tekenreeksen zoals “1A”. Om een gedeeltelijke overeenkomst te voorkomen, voegt u een $
toe aan het einde:
^[0-9]*$
Dit accepteert een willekeurig aantal cijfers, inclusief geen. Om een of meer cijfers te accepteren, wijzigt u de *
in +
. Om precies één cijfer te accepteren, verwijdert u gewoon de *
.
UPDATE: je hebt de argumenten voor IsMatch
door elkaar gehaald. Het patroon moet het tweede argument zijn, niet het eerste:
if (!System.Text.RegularExpressions.Regex.IsMatch(textbox.Text, "^[0-9]*$"))
LET OP: In JavaScript is \d
gelijk aan [0-9]
, maar in .NET, \d
komt standaard overeen met elk Unicode decimaal cijfer, inclusief exotische gerechten zoals ? (Myanmar 2) en ? (N’Ko 9). Tenzij uw app klaar is om met deze tekens om te gaan, houdt u zich aan [0-9]
(of levert u de RegexOptions.ECMAScript vlag).