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

Tags :

About the Author

mkyong
Founder of Mkyong.com and HostingCompass.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

  • Pingback: water ionizer()

  • Pingback: alkaline water benefits()

  • Pingback: laan penge billigt()

  • Pingback: fue.mobi()

  • Pingback: stop parking()

  • Pingback: call tvpackages.net today()

  • Pingback: DIRECTV channels()

  • Pingback: Warm uber-sexy bod massive rump cute hooters kinky()

  • Pingback: best online casinos()

  • Pingback: Blue Coaster33()

  • Pingback: Regular Expressions Resources | TechSlides()

  • Diego Villarroel

    As always… Thank you! C:

  • http://bit.ly/14DrZuF Java training in chennai

    Amazing. It was such a very useful information.

  • 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

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

  • http://f ff

    f

  • 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

    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

    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

    It was very helpful.Thanks a lot

  • zia

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

  • http://web.hanu.vn/ru/user/view.php?id=1408&course=1 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

    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

    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

    ya good sir we r thankful to u..

  • 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

    Useful with good explanation.Thank u

  • Ram

    Very good!!! Useful link

  • Pritam

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

  • http://mylucky5.com Venkat

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

  • Iyyasamy Murugesan

    fantastic….. useful…… good….

    keep posting like this..

  • tu?ba

    useful!!! thanks!

  • Fatih Karatana

    Glad to see this article and thank you for that. It is good to see that there is detailed explanation of regex types.