-3

I've tried many examples to disallow a single digit 0. The closest one working is [^0] but that matches on 20, 30, etc. I only want to match on 0.

revo
  • 47,783
  • 14
  • 74
  • 117
JWK
  • 55
  • 8
  • Please, provide *examples*. For instance, which of `"0"`, `"0.0"`, `"-0"`, `"+0"`, `"00"`, `"zero: 0"`, `"0-0-0"`, `" 0 "` (spaces) should be matched? – Dmitry Bychenko May 25 '18 at 08:55
  • Possible duplicate of [Regex - Match whole string](https://stackoverflow.com/questions/6298566/regex-match-whole-string) – revo May 25 '18 at 08:59

2 Answers2

2

Use start and end anchors to match the entire input being a zero:

^0$

Or to match a solitary zero within a string, use word boundaries:

\b0\b

Do disallow a solitary zero in the input use the above in a negative look ahead.

^(?!.*\b0\b).*
Bohemian
  • 412,405
  • 93
  • 575
  • 722
  • Thanks Bohemian. I'm trying to use 'regExp' with data-dojo-props to not allow '0' in the field although both positive and negative numbers are allowed. When using ^0$, it 'matches' on any number (5,6,7,etc). data-dojo-props="constraints:{min:-90,max:90,places:0}, required:true, invalidMessage:'Latitude degree is -90 to 90', regExp:'^0$', invalidMessage:'Latitude degree cannot be 0'" /> deg   – JWK May 25 '18 at 09:00
  • @JWK I think your code sample should be in the original question, so please *[edit it!](https://stackoverflow.com/posts/50525218/edit)* It helps to show a lot better what you are trying to achieve. – Peter B May 25 '18 at 09:14
1

If you want to match not a zero but do want to allow positive and negative numbers you might use. This uses anchors ^ and $ to assert the start and the end of the string.

^[+-]?[1-9][0-9]*$

Without using anchors you could use a word boundary \b:

[+-]?\b[1-9][0-9]*\b

That would match an optional plus or minus sign [+-]?, a digit from 1 - 9 [1-9] so it does not match a zero followed by zero or more times a digit [0-9]*

The fourth bird
  • 154,723
  • 16
  • 55
  • 70
  • This could be nitpicking :-) but it allows `0.0`. That wasn't in the question but would seem to be in the spirit of it to also disallow that. – Peter B May 25 '18 at 09:16
  • @The fourth bird - Thank you! That did it. I was pulling my hair out. – JWK May 25 '18 at 09:17
  • @PeterB Are you sure this matches `0.0`? [test 1](https://regex101.com/r/gESVfn/2) and [test 2](https://regex101.com/r/iA9DF9/2) – The fourth bird May 25 '18 at 09:20