Regular Expressions 101

Save & Share

  • Regex Version: ver. 13
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to Community Library

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

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

/
/
gu

Test String

Code Generator

Generated Code

#include <StringConstants.au3> ; to declare the Constants of StringRegExp #include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate Local $sRegex = "(?u)(?<=^|[\n;](?:[\t ]*(?:\w+ )?)?)export\s*(?<modifiers>(?:\s*declare|\s*abstract|\s*async)+)?\s*(?<declaration>class|const +enum|const|enum|function\*?|interface|let|namespace|type(?! *\{)|var)\s+(?<exports>(?:[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*(?=[\s=:;/({])(?!.*?,))|(?:[\w\t\n\r .,:$'"=-]+)|(?:[{[][\w\t\n\r .,:$'"-]+[}\]]))(?:\s*=\s*[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*)?" Local $sString = "export const CJS_SYNTAX_REGEX: RegExp = /pattern/gm;export const IGNORE_PATTERNS: string[] = [];" & @CRLF & _ "export declare const RESOLVE_EXTENSIONS: string[]" & @CRLF & _ "export enum Snack{}" & @CRLF & _ "export const enum Snack {}" & @CRLF & _ "export interface User {}" & @CRLF & _ "export class House {}" & @CRLF & _ "export declare abstract class House extends Building {}" & @CRLF & _ "export abstract class House {}" & @CRLF & _ "export async function run() {}" & @CRLF & _ "export async function* run() {}" & @CRLF & _ "export function foo() {}" & @CRLF & _ "export function* foo() {}" & @CRLF & _ "export const $foo = 42" & @CRLF & _ "export const $foo= 42" & @CRLF & _ "export namespace Foo {}" & @CRLF & _ "export type Foo = 'foo'" & @CRLF & _ "export let name1, name2/*, … */; // also var" & @CRLF & _ "export const name1 = 1, name2 = 2/*, … */; // also var, let" & @CRLF & _ "export function functionName() { /* … */ }" & @CRLF & _ "export class ClassName { /* … */ }" & @CRLF & _ "export function* generatorFunctionName() { /* … */ }" & @CRLF & _ "export const { name1, name2: bar } = o;" & @CRLF & _ "export const [ name1, name2 ] = array;" & @CRLF & _ "" & @CRLF & _ "declare module 'module-name' {" & @CRLF & _ " export declare abstract class Building {}" & @CRLF & _ " export declare class House extends Building {}" & @CRLF & _ "}" & @CRLF & _ "" & @CRLF & _ ""export const $foo = 42"" & @CRLF & _ "" & @CRLF & _ "export default async function functionName() { /* … */ }" & @CRLF & _ "export default function functionName() { /* … */ }" & @CRLF & _ "export default function* generatorName() { /* … */ }" & @CRLF & _ "export default async function* generatorNameAsync() { /* … */ }" & @CRLF & _ "export default class ClassName { /* … */ }" & @CRLF & _ "export default abstract class ClassName { /* … */ }" & @CRLF & _ "" & @CRLF & _ "export default function () { /* … */ }" & @CRLF & _ "export default async function () { /* … */ }" & @CRLF & _ "export default function* () { /* … */ }" & @CRLF & _ "export default async function* () { /* … */ }" & @CRLF & _ "export default class { /* … */ }" & @CRLF & _ "" & @CRLF & _ "export default async () => {}" & @CRLF & _ "export default async arg => {}" & @CRLF & _ "export default () => {}" & @CRLF & _ "export default arg => {}" & @CRLF & _ "export default (arg) => {}" & @CRLF & _ "" & @CRLF & _ "export default foo" & @CRLF & _ "export default foo;" & @CRLF & _ "export default 1 + 1;" & @CRLF & _ "" & @CRLF & _ "// export const CJS_SYNTAX_REGEX" & @CRLF & _ "" & @CRLF & _ "/**" & @CRLF & _ " * Resolvable file extensions." & @CRLF & _ " *" & @CRLF & _ " * @example" & @CRLF & _ " * export const CJS_SYNTAX_REGEX" & @CRLF & _ " */" & @CRLF & _ "" & @CRLF & _ "export type Foo = 'foo'" Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH) Local $aFullArray[0] For $i = 0 To UBound($aArray) -1 _ArrayConcatenate($aFullArray, $aArray[$i]) Next $aArray = $aFullArray ; Present the entire match result _ArrayDisplay($aArray, "Result")

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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm