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?
LVL 1
aturetskyAsked:
Who is Participating?
 
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
 
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
Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

 
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
 
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:
:-)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.