Vraag RegEx voor het valideren van een geheel getal met een maximale lengte van 10 tekens


Kunt u mij de betreffende RegEx wijzen voor het valideren van een geheel getal met een maximale lengte van 10 tekens?

Geldige zijn onder meer: ​​1234567890


14
2018-01-15 23:17


oorsprong


antwoorden:


[^0-9][+-]?[0-9]{1,10}[^0-9]

In woorden: optioneel + of - gevolgd door een cijfer, één tot tien keer herhaald. Merk op dat de meeste bibliotheken een sneltoets voor een cijfer hebben: \d, vandaar dat het bovenstaande ook kan worden geschreven als: \d{1,10}.


19
2018-01-15 23:19



Vergeet niet die gehele getallen kan wees negatief:

^\s*-?[0-9]{1,10}\s*$

Dit is de betekenis van elk onderdeel:

  • ^: Match moet beginnen aan het begin van de string
  • \s: Elk witruimte-teken
    • *: Zichtbaar nul of meerdere keren
  • -: Het koppelteken-minus teken, dat wordt gebruikt om een ​​negatief geheel getal aan te duiden
    • ?: Kan wel of niet voorkomen
  • [0-9]: Elk teken waarvan de ASCII-code (of Unicode-codepunt) tussen '0' en '9' ligt
    • {1,10}: Optredend minstens één, maar niet meer dan tien keer
  • \s: Elk witruimte-teken
    • *: Zichtbaar nul of meerdere keren
  • $: Match moet eindigen aan het einde van de string

Dit negeert de leidende en achterliggende witruimte en zou complexer zijn als u komma's als acceptabel beschouwt of als u het minteken als een van de tien toegestane tekens moet tellen.


27
2018-01-16 07:36



1 tot 10:

[0-9]{1,10}

In .NETTO (en niet alleen, zie onderstaande opmerking) ook geldig (met een stipulatie) dit:

\d{1,10}

C #:

var regex = new Regex("^[0-9]{1,10}$", RegexOptions.Compiled);
regex.IsMatch("1"); // true
regex.IsMatch("12"); // true
..
regex.IsMatch("1234567890"); // true
regex.IsMatch(""); // false
regex.IsMatch(" "); // true
regex.IsMatch("a"); // false

Postscriptum Hier is een zeer nuttige sandbox.


3
2018-01-15 23:20



In de meeste talen ben ik me bewust van, de feitelijke regex voor validatie zou moeten zijn ^[0-9]{1,10}$; anders zal de matcher ook positieve matches opleveren als het te valideren nummer deel uitmaakt van een langere string.


2
2018-01-15 23:39



0123456789 is geen geldig geheel getal (meestal worden nullen gestript)

Ik denk dat iets als deze regexp beter te gebruiken is:

^[1-9]([0-9]*)$

(ondersteunt geen ondertekende nummers)


0
2017-10-07 13:21