10 Java Regular Expression Examples You Should Know

Regular expression is an art of the programing, it’s hard to debug , learn and understand, but the powerful features are still attract many developers to code regular expression. Let’s explore the following 10 practical regular expression ~ enjoy :)

1. Username Regular Expression Pattern


 ^[a-z0-9_-]{3,15}$

^                    # Start of the line
  [a-z0-9_-]	     # Match characters and symbols in the list, a-z, 0-9 , underscore , hyphen
             {3,15}  # Length at least 3 characters and maximum length of 15 
$                    # End of the line

==> See the explanation and example here

2. Password Regular Expression Pattern


((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})

(			# Start of group
  (?=.*\d)		#   must contains one digit from 0-9
  (?=.*[a-z])		#   must contains one lowercase characters
  (?=.*[A-Z])		#   must contains one uppercase characters
  (?=.*[@#$%])		#   must contains one special symbols in the list "@#$%"
              .		#     match anything with previous condition checking
                {6,20}	#        length at least 6 characters and maximum of 20	
)			# End of group

==> See the explanation and example here

3. Hexadecimal Color Code Regular Expression Pattern


^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

^		 #start of the line
 #		 #  must constains a "#" symbols
 (		 #  start of group #1
  [A-Fa-f0-9]{6} #    any strings in the list, with length of 6
  |		 #    ..or
  [A-Fa-f0-9]{3} #    any strings in the list, with length of 3
 )		 #  end of group #1 
$		 #end of the line

==> See the explanation and example here

4. Email Regular Expression Pattern


^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+
(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$

^			#start of the line
  [_A-Za-z0-9-]+	#  must start with string in the bracket [ ], must contains one or more (+)
  (			#  start of group #1
    \\.[_A-Za-z0-9-]+	#     follow by a dot "." and string in the bracket [ ], must contains one or more (+)
  )*			#  end of group #1, this group is optional (*)
    @			#     must contains a "@" symbol
     [A-Za-z0-9]+       #        follow by string in the bracket [ ], must contains one or more (+)
      (			#	   start of group #2 - first level TLD checking
       \\.[A-Za-z0-9]+  #	     follow by a dot "." and string in the bracket [ ], must contains one or more (+)
      )*		#	   end of group #2, this group is optional (*)
      (			#	   start of group #3 - second level TLD checking
       \\.[A-Za-z]{2,}  #	     follow by a dot "." and string in the bracket [ ], with minimum length of 2
      )			#	   end of group #3
$			#end of the line

==> See the explanation and example here

5. Image File Extension Regular Expression Pattern


([^\s]+(\.(?i)(jpg|png|gif|bmp))$)

(			#Start of the group #1
 [^\s]+			#  must contains one or more anything (except white space)
       (		#    start of the group #2
         \.		#	follow by a dot "."
         (?i)		#	ignore the case sensitive checking
             (		#	  start of the group #3
              jpg	#	    contains characters "jpg"
              |		#	    ..or
              png	#	    contains characters "png"
              |		#	    ..or
              gif	#	    contains characters "gif"
              |		#	    ..or
              bmp	#	    contains characters "bmp"
             )		#	  end of the group #3
       )		#     end of the group #2	
  $			#  end of the string
)			#end of the group #1

==> See the explanation and example here

6. IP Address Regular Expression Pattern


^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.
([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$

^		#start of the line
 (		#  start of group #1
   [01]?\\d\\d? #    Can be one or two digits. If three digits appear, it must start either 0 or 1
		#    e.g ([0-9], [0-9][0-9],[0-1][0-9][0-9])
    |		#    ...or
   2[0-4]\\d	#    start with 2, follow by 0-4 and end with any digit (2[0-4][0-9]) 
    |           #    ...or
   25[0-5]      #    start with 2, follow by 5 and end with 0-5 (25[0-5]) 
 )		#  end of group #2
  \.            #  follow by a dot "."
....            # repeat with 3 time (3x)
$		#end of the line

==> See the explanation and example here

7. Time Format Regular Expression Pattern

Time in 12-Hour Format Regular Expression Pattern


(1[012]|[1-9]):[0-5][0-9](\\s)?(?i)(am|pm)

(				#start of group #1
 1[012]				#  start with 10, 11, 12
 |				#  or
 [1-9]				#  start with 1,2,...9
)				#end of group #1
 :				#    follow by a semi colon (:)
  [0-5][0-9]			#   follow by 0..5 and 0..9, which means 00 to 59
            (\\s)?		#        follow by a white space (optional)
                  (?i)		#          next checking is case insensitive
                      (am|pm)	#            follow by am or pm

==> See the explanation and example here

Time in 24-Hour Format Regular Expression Pattern


([01]?[0-9]|2[0-3]):[0-5][0-9]

(				#start of group #1
 [01]?[0-9]			#  start with 0-9,1-9,00-09,10-19
 |				#  or
 2[0-3]				#  start with 20-23
)				#end of group #1
 :				#  follow by a semi colon (:)
  [0-5][0-9]			#    follow by 0..5 and 0..9, which means 00 to 59

==> See the explanation and example here

8. Date Format (dd/mm/yyyy) Regular Expression Pattern


(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)

(			#start of group #1
 0?[1-9]		#  01-09 or 1-9
 |                  	#  ..or
 [12][0-9]		#  10-19 or 20-29
 |			#  ..or
 3[01]			#  30, 31
) 			#end of group #1
  /			#  follow by a "/"
   (			#    start of group #2
    0?[1-9]		#	01-09 or 1-9
    |			#	..or
    1[012]		#	10,11,12
    )			#    end of group #2
     /			#	follow by a "/"
      (			#	  start of group #3
       (19|20)\\d\\d	#	    19[0-9][0-9] or 20[0-9][0-9]
       )		#	  end of group #3

==> See the explanation and example here

9. HTML tag Regular Expression Pattern


<("[^"]*"|'[^']*'|[^'">])*>

<	  	#start with opening tag "<"
 (		#   start of group #1
   "[^"]*"	#	only two double quotes are allow - "string"
   |		#	..or
   '[^']*'	#	only two single quotes are allow - 'string'
   |		#	..or
   [^'">]	#	cant contains one single quotes, double quotes and ">"
 )		#   end of group #1
 *		# 0 or more
>		#end with closing tag ">"

==> See the explanation and example here

10. HTML links Regular Expression Pattern

HTML A tag Regular Expression Pattern


(?i)<a([^>]+)>(.+?)</a>

(		#start of group #1
 ?i		#  all checking are case insensive
)		#end of group #1
<a              #start with "<a"
  (		#  start of group #2
    [^>]+	#     anything except (">"), at least one character
   )		#  end of group #2
  >		#     follow by ">"
    (.+?)	#	match anything 
         </a>	#	  end with "</a>

Extract HTML link Regular Expression Pattern


\s*(?i)href\s*=\s*(\"([^"]*\")|'[^']*'|([^'">\s]+));

\s*			   #can start with whitespace
  (?i)			   # all checking are case insensive
     href		   #  follow by "href" word
        \s*=\s*		   #   allows spaces on either side of the equal sign,
              (		   #    start of group #1
               "([^"]*")   #      only two double quotes are allow - "string"
               |	   #	  ..or
               '[^']*'	   #      only two single quotes are allow - 'string'
               |           #	  ..or
               ([^'">]+)   #     cant contains one single / double quotes and ">"
	      )		   #    end of group #1

==> See the explanation and example here

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

Leave a Reply

avatar
newest oldest most voted
Daniel Galvin
Guest
Daniel Galvin

^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*+(\+[_A-Za-z0-9-]+)*@[A-Za-z0-9.-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

This is my version of the email regex revised. It allows for emails like test.test+test@test.com

This complies with Gmail where you can have + in your email address.

trackback
Regular Expressions Resources | TechSlides

[…] 10 Java Regular Expression Examples You Should Know – another list of good regex examples […]

sunil
Guest
sunil

can can one pls. create regex for this pattern to match either for valid dates/time or for invalid date/time :
25 January 2017 | 09:59:09 CST

Soumya Rout
Guest
Soumya Rout

`Sub_Specialty_Name` REGEXP ‘[^a-zA-Z0-9&]’;—>say something about this regular expression

Manoj Sawant
Guest
Manoj Sawant

Thanks MkYong,
Here is Best website to check regular expressions : http://www.regexr.com/
an online tool to learn, build, & test Regular Expressions.

Anonymous
Guest
Anonymous

DD/MM/YYYY is incorrect. 331/12/2011 – valid

ishan
Guest
ishan

P
style=”position: relative; margin: 0px; padding-left: 1px; white-space:
nowrap;”
to
P

ishan
Guest
ishan

Thanks the explanation above is useful . Can you please help me in this .
I want to convert

to

what shuld be the Reg-ex pattern for the the conversion.
( keeping in mind the spaces can be there in the source text .)

ronn
Guest
ronn

Thanks,
That was very helpful :)
I have a usecase that i’m not able to solve with regex. I want to fetch a substring between two same/different delimiters. The delimiters occur multiple times in the string. For eg: myString: mkyong_regex^2014^java_substring^extraction_123. So here how would i extract a substring which lies between nth occurence of ‘^’ and mth occurence of ‘_’. Say n = 2 and m = 3

alter
Guest
alter

i really like your post everytime ,thank you ,that saves me much time .

Diego Villarroel
Guest
Diego Villarroel

As always… Thank you! C:

utpal
Guest
utpal

Hi,
Thanks in advance for your help. I have to replace a string if it’s not available inside any single quote.

e.g.
name = ‘abc12namexyz234′ or name=’def234namewsr345name’ and name like ‘%ab123name345rt%’

In the above I’ve to replace “name” with “ApplicantEntity.name” but I don’t want to replace the string that is available inside the single quote i.e. ‘abc12namexyz234’. The result after the replacement should be:

ApplicantEntity.name= ‘abc12namexyz234′ or ApplicantEntity.name=’def234namewsr345name’ and ApplicantEntity.name like ‘%ab123name345rt%’

I am trying to find a appropriate regex. But still no success on that. Please Help….

Thanks,
Utpal

Mandeep Singh
Guest
Mandeep Singh

Thanks for the information. You are doing a great job !

ff
Guest
ff

f

Ian
Guest
Ian

Your logic for “Email Regular Expression Pattern” is simplistic and not consistent with the RFC specifications for RFC2822- Internet Message Format

Please also refer to RFC3696- Application Techniques for Checking and Transformation of Names.

NiKp
Guest
NiKp

Hi Kyong,

I am looking for a regular expression with AND condition. Currently I am using “(str1)|(str2)”, this one looks OK for OR condition.

Example:
Input String:
“i thought it was a clever way to present the idea. At first, I tried to figure out how everything was connected. ”

with below complete words match-
present & idea = matcher should return true.
presenting & idea = matcher should return false.

Rahul
Guest
Rahul

The reg ex about date format, doesn’t seem to be correct, it accepts 4 digits dates straight away if you run that in Jdk 1.6 ( I am not sure about other versions of JDK). Please check.

String myDate = “3106/12/2099”;
String regEx = “(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)”;

Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(myDate);
boolean result = matcher.find();
System.out.println(“Result = “+result);

output: Result = true (surprising)

Regards
Rahul A. Bhujbal.

Kapil
Guest
Kapil

It was very helpful.Thanks a lot

zia
Guest
zia

I want to know regular expression for various symbols used in doc file list. like bullet sign, star and ……………..

http://Ladepilacionmasculina.com/ladepilacion-brasilena/
Guest
http://Ladepilacionmasculina.com/ladepilacion-brasilena/

All who may have utilized these rubber based traditional ski discover they
should test the skis in different conditions to find out once they work finest.

It is better to leave it to the hands of the professionals since they
know what they are doing and the fewer mistakes the better results you have and if the procedure
is done correctly then you won’t experience any side effects like burns, skin irritations, rashes, skin infections and more. This is why I have tried all the hair density reduction approaches in the market, but to disastrous consequences.

Alan
Guest
Alan

FYI you refer to the “:” character as a “semi colon” — this is incorrect and confusing. The “:” character is a “colon” and this character “;” is a “semicolon” (one word) although writing it as “semi colon” is a lot easier to read.

nisha
Guest
nisha

Great Tutorial!!

if I want to allow blank spaces in my charset for “name”, how can I do that?
Will this work?
String strPattern = “^[a-zA-Z](\\w*)(_*)(-*)(\\u0020*)”;

Thanks in advance..

Asish
Guest
Asish

ya good sir we r thankful to u..

matt
Guest
matt

Great examples. Thanks.

But what is the difference between \\d (as in #6) and \d (as in #2)? Where do you use which? I was using \d in a Hive query and it didn’t work but \\d seems to work.

Thanks again for a great refresher on regex.
Matt

Kshama
Guest
Kshama

Useful with good explanation.Thank u

Ram
Guest
Ram

Very good!!! Useful link

Pritam
Guest
Pritam

Awesome examples..very helpful..keep on posting :)

Venkat
Guest
Venkat

Very good & useful. I love your website. Lots of good stuff!!

Iyyasamy Murugesan
Guest
Iyyasamy Murugesan

fantastic….. useful…… good….

keep posting like this..

tu?ba
Guest
tu?ba

useful!!! thanks!