Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests (6)

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression
No Match

/
/
gs

Test String

Code Generator

Generated Code

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "(\\+\\d{1,4}( \\d{1,4}){0,2})"; final String string = "Åland Islands\n" + "+358 18\n" + "Afghanistan\n" + "+93\n" + "Albania\n" + "+355\n" + "Algeria\n" + "+213\n" + "American Samoa\n" + "+1 684\n" + "Andorra\n" + "+376\n" + "Angola\n" + "+244\n" + "Anguilla\n" + "+1 264\n" + "Antigua and Barbuda\n" + "+1 268\n" + "Argentina\n" + "+54\n" + "Armenia\n" + "+374\n" + "Aruba\n" + "+297\n" + "Ascension Island\n" + "+247\n" + "Australia\n" + "+61\n" + "Australian Antarctic Territory\n" + "+672 1\n" + "Austria\n" + "+43\n" + "Azerbaijan\n" + "+994\n" + "Bahamas\n" + "+1 242\n" + "Bahrain\n" + "+973\n" + "Bangladesh\n" + "+880\n" + "Barbados\n" + "+1 246\n" + "Belarus\n" + "+375\n" + "Belgium\n" + "+32\n" + "Belize\n" + "+501\n" + "Benin\n" + "+229\n" + "Bermuda\n" + "+1 441\n" + "Bhutan\n" + "+975\n" + "Bolivia\n" + "+591\n" + "Bosnia and Herzegovina\n" + "+387\n" + "Botswana\n" + "+267\n" + "Bouvet Island\n" + "+47\n" + "Brazil\n" + "+55\n" + "British Indian Ocean Territory\n" + "+246\n" + "British Virgin Islands\n" + "+1 284\n" + "Brunei\n" + "+673\n" + "Bulgaria\n" + "+359\n" + "Burkina Faso\n" + "+226\n" + "Burundi\n" + "+257\n" + "Cambodia\n" + "+855\n" + "Cameroon\n" + "+237\n" + "Canada\n" + "+1\n" + "Cape Verde\n" + "+238\n" + "Caribbean Netherlands\n" + "+599\n" + "Cayman Islands\n" + "+1 345\n" + "Central African Republic\n" + "+236\n" + "Chad\n" + "+235\n" + "Chile\n" + "+56\n" + "China\n" + "+86\n" + "Christmas Island\n" + "+61 89164\n" + "Cocos (Keeling) Islands\n" + "+61 89162\n" + "Colombia\n" + "+57\n" + "Comoros\n" + "+269\n" + "Cook Islands\n" + "+682\n" + "Costa Rica\n" + "+506\n" + "Croatia\n" + "+385\n" + "Cuba\n" + "+53\n" + "Curaçao\n" + "+599 9\n" + "Cyprus\n" + "+357\n" + "Czech Republic\n" + "+420\n" + "Democratic Republic of the Congo\n" + "+243\n" + "Denmark\n" + "+45\n" + "Djibouti\n" + "+253\n" + "Dominica\n" + "+1 767\n" + "Dominican Republic\n" + "+1 809\n" + "+1 829\n" + "+1 849\n" + "East Timor\n" + "+670\n" + "Ecuador\n" + "+593\n" + "Egypt\n" + "+20\n" + "El Salvador\n" + "+503\n" + "Equatorial Guinea\n" + "+240\n" + "Eritrea\n" + "+291\n" + "Estonia\n" + "+372\n" + "Eswatini\n" + "+268\n" + "Ethiopia\n" + "+251\n" + "Falkland Islands(Malvinas)\n" + "+500\n" + "Faroe Islands\n" + "+298\n" + "Fiji\n" + "+679\n" + "Finland\n" + "+358\n" + "France\n" + "+33\n" + "French Guiana\n" + "+594\n" + "French Polynesia\n" + "+689\n" + "French Southern and Antarctic Lands\n" + "+262\n" + "Gabon\n" + "+241\n" + "Gambia\n" + "+220\n" + "Georgia\n" + "+995\n" + "Germany\n" + "+49\n" + "Ghana\n" + "+233\n" + "Gibraltar\n" + "+350\n" + "Greece\n" + "+30\n" + "Greenland\n" + "+299\n" + "Grenada\n" + "+1 473\n" + "Guadeloupe\n" + "+590\n" + "Guam\n" + "+1 671\n" + "Guatemala\n" + "+502\n" + "Guernsey\n" + "+44 1481\n" + "+44 7781\n" + "+44 7839\n" + "+44 7911\n" + "Guinea\n" + "+224\n" + "Guinea-Bissau\n" + "+245\n" + "Guyana\n" + "+592\n" + "Haiti\n" + "+509\n" + "Heard Island and McDonald Islands\n" + "+1 672\n" + "Honduras\n" + "+504\n" + "Hong Kong\n" + "+852\n" + "Hungary\n" + "+36\n" + "Iceland\n" + "+354\n" + "India\n" + "+91\n" + "Indonesia\n" + "+62\n" + "Iran\n" + "+98\n" + "Iraq\n" + "+964\n" + "Ireland\n" + "+353\n" + "Isle of Man\n" + "+44 1624\n" + "+44 7524\n" + "+44 7624\n" + "+44 7924\n" + "Israel\n" + "+972\n" + "Italy\n" + "+39\n" + "Ivory Coast\n" + "+225\n" + "Jamaica\n" + "+1 876\n" + "Japan\n" + "+81\n" + "Jersey\n" + "+44 1534\n" + "Jordan\n" + "+962\n" + "Kazakhstan\n" + "+7 6\n" + "+7 7\n" + "Kenya\n" + "+254\n" + "Kiribati\n" + "+686\n" + "Kosovo\n" + "+383\n" + "Kuwait\n" + "+965\n" + "Kyrgyzstan\n" + "+996\n" + "Laos\n" + "+856\n" + "Latvia\n" + "+371\n" + "Lebanon\n" + "+961\n" + "Lesotho\n" + "+266\n" + "Liberia\n" + "+231\n" + "Libya\n" + "+218\n" + "Liechtenstein\n" + "+423\n" + "Lithuania\n" + "+370\n" + "Luxembourg\n" + "+352\n" + "Macao\n" + "+853\n" + "Madagascar\n" + "+261\n" + "Malawi\n" + "+265\n" + "Malaysia\n" + "+60\n" + "Maldives\n" + "+960\n" + "Mali\n" + "+223\n" + "Malta\n" + "+356\n" + "Marshall Islands\n" + "+692\n" + "Martinique\n" + "+596\n" + "Mauritania\n" + "+222\n" + "Mauritius\n" + "+230\n" + "Mayotte\n" + "+262 269\n" + "+262 639\n" + "Mexico\n" + "+52\n" + "Micronesia\n" + "+691\n" + "Moldova\n" + "+373\n" + "Monaco\n" + "+377\n" + "Mongolia\n" + "+976\n" + "Montenegro\n" + "+382\n" + "Montserrat\n" + "+1 664\n" + "Morocco\n" + "+212\n" + "Mozambique\n" + "+258\n" + "Myanmar\n" + "+95\n" + "Namibia\n" + "+264\n" + "Nauru\n" + "+674\n" + "Nepal\n" + "+977\n" + "Netherlands\n" + "+31\n" + "Netherlands Antilles\n" + "+599\n" + "New Caledonia\n" + "+687\n" + "New Zealand\n" + "+64\n" + "Nicaragua\n" + "+505\n" + "Niger\n" + "+227\n" + "Nigeria\n" + "+234\n" + "Niue\n" + "+683\n" + "Norfolk Island\n" + "+672 3\n" + "North Korea\n" + "+850\n" + "North Macedonia\n" + "+389\n" + "Northern Ireland\n" + "+44 28\n" + "Northern Mariana Islands\n" + "+1 670\n" + "Norway\n" + "+47\n" + "Oman\n" + "+968\n" + "Pakistan\n" + "+92\n" + "Palau\n" + "+680\n" + "Palestine\n" + "+970\n" + "Panama\n" + "+507\n" + "Papua New Guinea\n" + "+675\n" + "Paraguay\n" + "+595\n" + "Peru\n" + "+51\n" + "Philippines\n" + "+63\n" + "Pitcairn\n" + "+64\n" + "Poland\n" + "+48\n" + "Portugal\n" + "+351\n" + "Puerto Rico\n" + "+1 787\n" + "+1 939\n" + "Qatar\n" + "+974\n" + "Réunion\n" + "+262\n" + "Republic of the Congo\n" + "+242\n" + "Romania\n" + "+40\n" + "Russia\n" + "+7\n" + "Rwanda\n" + "+250\n" + "Saint Barthélemy\n" + "+590\n" + "Saint Helena\n" + "+290\n" + "Saint Kitts and Nevis\n" + "+1 869\n" + "Saint Lucia\n" + "+1 758\n" + "Saint Martin(French part)\n" + "+590\n" + "Saint Pierre and Miquelon\n" + "+508\n" + "Saint Vincent and the Grenadines\n" + "+1 784\n" + "Samoa\n" + "+685\n" + "San Marino\n" + "+378\n" + "Sao Tome and Principe\n" + "+239\n" + "Saudi Arabia\n" + "+966\n" + "Senegal\n" + "+221\n" + "Serbia\n" + "+381\n" + "Seychelles\n" + "+248\n" + "Sierra Leone\n" + "+232\n" + "Singapore\n" + "+65\n" + "Slovakia\n" + "+421\n" + "Slovenia\n" + "+386\n" + "Solomon Islands\n" + "+677\n" + "Somalia\n" + "+252\n" + "South Africa\n" + "+27\n" + "South Georgia and the South Sandwich Islands\n" + "+500\n" + "South Korea\n" + "+82\n" + "South Sudan\n" + "+211\n" + "Spain\n" + "+34\n" + "Sri Lanka\n" + "+94\n" + "Sudan\n" + "+249\n" + "Suriname\n" + "+597\n" + "Svalbard and Jan Mayen\n" + "+47 79\n" + "Sweden\n" + "+46\n" + "Switzerland\n" + "+41\n" + "Syria\n" + "+963\n" + "Taiwan\n" + "+886\n" + "Tajikistan\n" + "+992\n" + "Tanzania\n" + "+255\n" + "Thailand\n" + "+66\n" + "Togo\n" + "+228\n" + "Tokelau\n" + "+690\n" + "Tonga\n" + "+676\n" + "Trinidad and Tobago\n" + "+1 868\n" + "Tunisia\n" + "+216\n" + "Turkey\n" + "+90\n" + "Turkmenistan\n" + "+993\n" + "Turks and Caicos Islands\n" + "+1 649\n" + "Tuvalu\n" + "+688\n" + "Uganda\n" + "+256\n" + "Ukraine\n" + "+380\n" + "United Arab Emirates\n" + "+971\n" + "United Kingdom\n" + "+44\n" + "United States\n" + "+1\n" + "United States Minor Outlying Islands\n" + "+246\n" + "Uruguay\n" + "+598\n" + "Uzbekistan\n" + "+998\n" + "Vanuatu\n" + "+678\n" + "Vatican City\n" + "+379\n" + "Venezuela\n" + "+58\n" + "Vietnam\n" + "+84\n" + "Virgin Islands, U.S.\n" + "+1 340\n" + "Wallis and Futuna\n" + "+681\n" + "Western Sahara\n" + "+212\n" + "Yemen\n" + "+967\n" + "Zambia\n" + "+260\n" + "Zimbabwe\n" + "+263"; final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); final Matcher matcher = pattern.matcher(string); while (matcher.find()) { System.out.println("Full match: " + matcher.group(0)); for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } } } }

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html