Pytanie w sprawie c#, regex – Instrukcja Regex tylko dla liczb od 0 do 255 w C #

1

Jak napisać instrukcję wyrażenia regularnego tylko dla liczb od 0 do 255? 0 i 255 będą ważne dla wyciągu.

Tak, 001 jest prawidłową wartością. sanchop22
Jest001 poprawna wartość? Fredrik Mörk

Twoja odpowiedź

4   odpowiedź
8

Możesz znaleźć tutaj kilka zakresów liczbowych:

http://www.regular-expressions.info/numericranges.html

Twój przykład to:

^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$ 
Akceptuje ciąg „-1” i nie akceptuje „001” jako 1. sanchop22
0

Wypróbuj negatywne spojrzenie za:

(?<!\-)\b0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b

Wyjaśnienie

<!--
(?<!\-)\b0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b

Options: ^ and $ match at line breaks

Assert that it is impossible to match the regex below with the match ending at this position (negative lookbehind) «(?<!\-)»
   Match the character “-” literally «\-»
Assert position at a word boundary «\b»
Match the character “0” literally «0*»
   Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the regular expression below and capture its match into backreference number 1 «([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])»
   Match either the regular expression below (attempting the next alternative only if this one fails) «[0-9]{1,2}»
      Match a single character in the range between “0” and “9” «[0-9]{1,2}»
         Between one and 2 times, as many times as possible, giving back as needed (greedy) «{1,2}»
   Or match regular expression number 2 below (attempting the next alternative only if this one fails) «1[0-9]{2}»
      Match the character “1” literally «1»
      Match a single character in the range between “0” and “9” «[0-9]{2}»
         Exactly 2 times «{2}»
   Or match regular expression number 3 below (attempting the next alternative only if this one fails) «2[0-4][0-9]»
      Match the character “2” literally «2»
      Match a single character in the range between “0” and “4” «[0-4]»
      Match a single character in the range between “0” and “9” «[0-9]»
   Or match regular expression number 4 below (the entire group fails if this one fails to match) «25[0-5]»
      Match the characters “25” literally «25»
      Match a single character in the range between “0” and “5” «[0-5]»
Assert position at a word boundary «\b»
-->
0

Próbować

([01]?\d\d?|2[0-4]\d|25[0-5])
Akceptuje ciąg „-1” i nie akceptuje „001” jako 1. sanchop22
4
^([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

To narzędzie jest bardzo pomocny w takich sprawach. Trochę poszukiwań też nikogo nie boli.

Jeśli chcesz zezwolić na początkowe zera, wzór musi zostać dostosowany. Na przykład.:

^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$
Pozwolę sobie być innego zdania. Joey
Akceptuje ciąg „-1” i nie akceptuje „001” jako 1. sanchop22

Powiązane pytania