Main Tutorials

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 Author

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

Comments

Subscribe
Notify of
77 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Daniel Galvin
8 years ago

^[_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 [email protected]

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

J_kk
4 years ago
Reply to  Daniel Galvin

you save my life!

suraj ladda
3 years ago

can you please help me out for this regex pattern ?

pattern :

[A-Z]{1,4}[-]{0,1}[0-9]{13,14}

Megha Garg
5 years ago

Hi can you please provide me Rejex for password as per below :
• The minimum password length is 8 characters.
• The maximum password length is 15 characters.
• The maximum repeating character length is 2.
• The content minimum is 1 letter and one digit.
• The content is case sensitive.

sunil
7 years ago

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
8 years ago

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

Manoj Sawant
9 years ago

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

Anonymous
9 years ago

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

ishan
9 years ago

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

ishan
9 years ago

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
10 years ago

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
10 years ago

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

Diego Villarroel
10 years ago

As always… Thank you! C:

utpal
10 years ago

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
10 years ago

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

ff
10 years ago

f

Ian
10 years ago

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
10 years ago

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
10 years ago

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
10 years ago

It was very helpful.Thanks a lot

zia
10 years ago

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

http://Ladepilacionmasculina.com/ladepilacion-brasilena/
10 years ago

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
10 years ago

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
11 years ago

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
11 years ago

ya good sir we r thankful to u..

matt
11 years ago

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
11 years ago

Useful with good explanation.Thank u

Ram
11 years ago

Very good!!! Useful link

Pritam
11 years ago

Awesome examples..very helpful..keep on posting 🙂

Venkat
11 years ago

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

Iyyasamy Murugesan
11 years ago

fantastic….. useful…… good….

keep posting like this..