Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

regex to find numbers with unique digits

Tags:

java

regex

I want to find 10 digit numbers with no repeat digits, for example:

1123456789 //fail, there are two 1's
6758951230 //fail, there are two 5's
6789012345 //pass, each digit occurs once only. 

at the moment I am using regex but can only match 10digits numbers(it doesnt check for duplicates. I am using this regex:

[0-9]{10}

Can this be done with regex or is there a better way to achieve this?

like image 743
Sionnach733 Avatar asked Nov 25 '13 23:11

Sionnach733


People also ask

How do I check a number in regex?

The [0-9] expression is used to find any character between the brackets. The digits inside the brackets can be any numbers or span of numbers from 0 to 9. Tip: Use the [^0-9] expression to find any character that is NOT a digit.


1 Answers

This regex works:

^(?!.*(.).*\1)\d{10}$

This uses an anchored negative look ahead with a back reference to assert that there are no repeating characters.

See a live demo working with your examples.

In java:

if (str.matches("^(?!.*(.).*\\1)\\d{10}"))
    // number passes
like image 195
Bohemian Avatar answered Oct 08 '22 19:10

Bohemian