• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 498
  • Last Modified:

simplest way to check if a given string is a positive integer using regex

This seems to be simple and yet I can't find anything other than complicated expressions I found on other sites.

Basically I need a regular expression that will check if a given string is an integer 1 or above.  So, for example, [1-9] would ensure that it's an integer 1 through 9.  But how would I check for an integer from 1 and up?
0
aturetsky
Asked:
aturetsky
  • 3
  • 3
  • 2
  • +2
1 Solution
 
Terry WoodsIT GuruCommented:
Like this (doesn't allow leading zeroes):
[1-9][0-9]*
0
 
Terry WoodsIT GuruCommented:
You'll probably want to make sure you don't match on a partial string too actually, so you'll need to match the start and end of the string with ^ and $ respectively:
^[1-9][0-9]*$
0
 
aturetskyAuthor Commented:
Hmm, your first solution seems to work as well and doesn't appear to match on a partial string (which is as desired).   Does the need for ^ and $ depend on what language and api is being used?  I am using java and am doing

inputString.matches([1-9][0-9]*)

and it (as desired) returns false for partial matches, so for "blah45" or "45blah" it returns false, but for "45" it returns true.

Why then would we need the begin and end characters?
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
ghostdog74Commented:
this is simple you don't need regular expression. convert the string to number (if necessary, if not depending on your language will do it for you automatically), then check if its greater than 0, eg  if int(string) > 0. i can't see why you need a regular expression for that simple task.
0
 
aturetskyAuthor Commented:
ghostdog74:  I don't want to do it via exception handling (I am using java).
0
 
CEHJCommented:
You can simplify that somewhat to
boolean isPositive = s.matches("\\d+");

Open in new window

0
 
Maciej SsysadminCommented:
0
 
aturetskyAuthor Commented:
CEHJ - that looks like the best solution thus far - but it doesn't exclude 0 and, as mentioned, I need 1 and up.  Any thoughts?
0
 
CEHJCommented:
Sorry - missed that. Of course you could do the following and save yourself one character over the first post ;-) (You don't need to worry about partial matching - it's not allowed)


inputString.matches("[1-9]\\d*");

Open in new window

0
 
CEHJCommented:
:-)
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now