Alex Alex - 28 days ago 6
ASP.NET (C#) Question

Regular Expression for positive and negative numbers int values separated by spaces

For

positive number RegExp is ^[0-9]+$
negative number is ^-[0-9]+$


But how to add spaces between numbers and to accept any number whether it is positive or negative first

Answer Source

I can give you a pattern that would work with Ruby (sorry, I haven't used C# for a while). This pattern will capture the numbers, if used with the scan function. I'm sure there will be something you can do with captures and groups in C# that is similar:

pattern = /^\s*(
   [\-\+]?
   [0-9]+
 )
 (
   (\s+
     [\-\+]?
     [0-9]+
   )
 )*$/x

xs = ["9", "+9", "-9", "87", "+87", "-87", "9  87", "9 +87", "9  -87", "+9 87", 
"-9 87", "+9 +87", "-9 +87", "-9 87", "9 +9 -9", "9 +9  87", "9 +9  +87", 
"9 +9  -87", "9 +9 654", "9 +9 +654", "9 +9 -654", "9 -9  87", "9 -9  +87", 
"9 -9  -87", "9 -9 654", "9 -9 +654", "9 -9 -654", "9  87  +87", "9  87  -87", 
"9  87 654", "9  87 +654", "9  87 -654", "9  +87  -87", "9  +87 654", 
"9  +87 +654", "9  +87 -654", "9  -87 654", "9  -87 +654", "9  -87 -654", 
"9 654 +654", "9 654 -654", "9 +654 -654", "+9 -9  87", "+9 -9  +87", 
"+9 -9  -87", "+9 -9 654", "+9 -9 +654", "+9 -9 -654", "+9  87  +87", 
"+9  87  -87", "+9  87 654", "+9  87 +654", "+9  87 -654", "+9  +87  -87", 
"+9  +87 654", "+9  +87 +654", "+9  +87 -654", "+9  -87 654", "+9  -87 +654", 
"+9  -87 -654", "+9 654 +654", "+9 654 -654", "+9 +654 -654", "-9  87  +87", 
"-9  87  -87", "-9  87 654", "-9  87 +654", "-9  87 -654", "-9  +87  -87", 
"-9  +87 654", "-9  +87 +654", "-9  +87 -654", "-9  -87 654", "-9  -87 +654", 
"-9  -87 -654", "-9 654 +654", "-9 654 -654", "-9 +654 -654", " 87  +87  -87", 
" 87  +87 654", " 87  +87 +654", " 87  +87 -654", " 87  -87 654", 
" 87  -87 +654", " 87  -87 -654", " 87 654 +654", " 87 654 -654", 
" 87 +654 -654", " +87  -87 654", " +87  -87 +654", " +87  -87 -654", 
" +87 654 +654", " +87 654 -654", " +87 +654 -654", " -87 654 +654", 
" -87 654 -654", " -87 +654 -654", "654 +654 -654"]

xs.each{|x| printf("%15s: %s\n", x, x.scan(pattern).inspect) }

Results in:

                  9: ["9"]
                 +9: ["+9"]
                 -9: ["-9"]
                 87: ["87"]
                +87: ["+87"]
                -87: ["-87"]
              9  87: ["9", "87"]
              9 +87: ["9", "+87"]
             9  -87: ["9", "-87"]
              +9 87: ["+9", "87"]
              -9 87: ["-9", "87"]
             +9 +87: ["+9", "+87"]
             -9 +87: ["-9", "+87"]
              -9 87: ["-9", "87"]
            9 +9 -9: ["9", "+9", "-9"]
           9 +9  87: ["9", "+9", "87"]
          9 +9  +87: ["9", "+9", "+87"]
          9 +9  -87: ["9", "+9", "-87"]
           9 +9 654: ["9", "+9", "654"]
          9 +9 +654: ["9", "+9", "+654"]
          9 +9 -654: ["9", "+9", "-654"]
           9 -9  87: ["9", "-9", "87"]
          9 -9  +87: ["9", "-9", "+87"]
          9 -9  -87: ["9", "-9", "-87"]
           9 -9 654: ["9", "-9", "654"]
          9 -9 +654: ["9", "-9", "+654"]
          9 -9 -654: ["9", "-9", "-654"]
         9  87  +87: ["9", "87", "+87"]
         9  87  -87: ["9", "87", "-87"]
          9  87 654: ["9", "87", "654"]
         9  87 +654: ["9", "87", "+654"]
         9  87 -654: ["9", "87", "-654"]
        9  +87  -87: ["9", "+87", "-87"]
         9  +87 654: ["9", "+87", "654"]
        9  +87 +654: ["9", "+87", "+654"]
        9  +87 -654: ["9", "+87", "-654"]
         9  -87 654: ["9", "-87", "654"]
        9  -87 +654: ["9", "-87", "+654"]
        9  -87 -654: ["9", "-87", "-654"]
         9 654 +654: ["9", "654", "+654"]
         9 654 -654: ["9", "654", "-654"]
        9 +654 -654: ["9", "+654", "-654"]
          +9 -9  87: ["+9", "-9", "87"]
         +9 -9  +87: ["+9", "-9", "+87"]
         +9 -9  -87: ["+9", "-9", "-87"]
          +9 -9 654: ["+9", "-9", "654"]
         +9 -9 +654: ["+9", "-9", "+654"]
         +9 -9 -654: ["+9", "-9", "-654"]
        +9  87  +87: ["+9", "87", "+87"]
        +9  87  -87: ["+9", "87", "-87"]
         +9  87 654: ["+9", "87", "654"]
        +9  87 +654: ["+9", "87", "+654"]
        +9  87 -654: ["+9", "87", "-654"]
       +9  +87  -87: ["+9", "+87", "-87"]
        +9  +87 654: ["+9", "+87", "654"]
       +9  +87 +654: ["+9", "+87", "+654"]
       +9  +87 -654: ["+9", "+87", "-654"]
        +9  -87 654: ["+9", "-87", "654"]
       +9  -87 +654: ["+9", "-87", "+654"]
       +9  -87 -654: ["+9", "-87", "-654"]
        +9 654 +654: ["+9", "654", "+654"]
        +9 654 -654: ["+9", "654", "-654"]
       +9 +654 -654: ["+9", "+654", "-654"]
        -9  87  +87: ["-9", "87", "+87"]
        -9  87  -87: ["-9", "87", "-87"]
         -9  87 654: ["-9", "87", "654"]
        -9  87 +654: ["-9", "87", "+654"]
        -9  87 -654: ["-9", "87", "-654"]
       -9  +87  -87: ["-9", "+87", "-87"]
        -9  +87 654: ["-9", "+87", "654"]
       -9  +87 +654: ["-9", "+87", "+654"]
       -9  +87 -654: ["-9", "+87", "-654"]
        -9  -87 654: ["-9", "-87", "654"]
       -9  -87 +654: ["-9", "-87", "+654"]
       -9  -87 -654: ["-9", "-87", "-654"]
        -9 654 +654: ["-9", "654", "+654"]
        -9 654 -654: ["-9", "654", "-654"]
       -9 +654 -654: ["-9", "+654", "-654"]
       87  +87  -87: ["87", "+87", "-87"]
        87  +87 654: ["87", "+87", "654"]
       87  +87 +654: ["87", "+87", "+654"]
       87  +87 -654: ["87", "+87", "-654"]
        87  -87 654: ["87", "-87", "654"]
       87  -87 +654: ["87", "-87", "+654"]
       87  -87 -654: ["87", "-87", "-654"]
        87 654 +654: ["87", "654", "+654"]
        87 654 -654: ["87", "654", "-654"]
       87 +654 -654: ["87", "+654", "-654"]
       +87  -87 654: ["+87", "-87", "654"]
      +87  -87 +654: ["+87", "-87", "+654"]
      +87  -87 -654: ["+87", "-87", "-654"]
       +87 654 +654: ["+87", "654", "+654"]
       +87 654 -654: ["+87", "654", "-654"]
      +87 +654 -654: ["+87", "+654", "-654"]
       -87 654 +654: ["-87", "654", "+654"]
       -87 654 -654: ["-87", "654", "-654"]
      -87 +654 -654: ["-87", "+654", "-654"]
      654 +654 -654: ["654", "+654", "-654"]