IamBanksy
IamBanksy

Reputation: 591

regex allow only numbers or empty string

Can someone help me create this regex. I need it to check to see if the string is either entirely whitespace(empty) or if it only contains positive whole numbers. If anything else it fails. This is what I have so far.

/^\s*|[0-9][0-9]*/

Upvotes: 36

Views: 101667

Answers (6)

Hazaaa
Hazaaa

Reputation: 172

This helped me. It matches empty string and any number you enter.

/^(|\d)+$/

Try here if you want: regex101.com

Upvotes: 2

Dr Manhattan
Dr Manhattan

Reputation: 14037

To match a number or empty string '' i.e the user has not entered any input do this

(^[0-9]+$|^$)

To match a number, an empty string, or a white space character

(^[0-9]+$|^$|^\s$)

Test this on regex101

Upvotes: 20

Adam
Adam

Reputation: 1193

^\d+([\.\,][0]{2})?$

I found this worked for me. Allow any whole number, but only a decimal of .00

Pass

  • 999 90
  • 100
  • 100.00
  • 101.00
  • 1000.00

Fails

  • 101.01
  • 1000.99

Try it at http://regexpal.com/

Upvotes: 1

Sadat
Sadat

Reputation: 3501

You can try it-

/^\d*$/

To match with white space-

/^[\s\d\s]*$/

Upvotes: 2

Cfreak
Cfreak

Reputation: 19309

Kobi has a good answer but technically you don't have to capture it (unless you're going to do something the output)

/^[\s\d]+$/

Or if you don't care if the string is completely empty (i.e. "")

/^[\s\d]*$/

To clarify I understood the original question to mean whitespace in the string should be ignored.

Upvotes: 3

Kobi
Kobi

Reputation: 137997

You're looking for:

/^(\s*|\d+)$/

If you want a positive number without leading zeros, use [1-9][0-9]*

If you don't care about whitespaces around the number, you can also try:

/^\s*\d*\s*$/

Note that you don't want to allow partial matching, for example 123abc, so you need the start and end anchors: ^...$.
Your regex has a common mistake: ^\s*|\d+$, for example, does not enforce a whole match, as is it the same as (^\s*)|(\d+$), reading, Spaces at the start, or digits at the end.

Upvotes: 62

Related Questions