Regex die alleen cijfers (0-9) en GEEN tekens accepteert

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).

LEAVE A REPLY

Please enter your comment!
Please enter your name here

5 + 7 =

Other episodes