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

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

/
/
gm

Test String

Substitution

Processing...

Code Generator

Generated Code

using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string pattern = @"(\/\/.*| ?\/\*[^]*?\*\/)(,?)$"; string substitution = @"$2"; string input = @"/** * * * a multi-line example just for fun */ { ""compilerOptions"": { /* Visit https://aka.ms/tsconfig.json to read more about this file */ /* Basic Options */ // ""incremental"": true, /* Enable incremental compilation */ ""target"": ""ES6"" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, ""module"": ""commonjs"" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, ""lib"": [""dom"", ""es6""] /* Specify library files to be included in the compilation. */, ""allowJs"": true /* Allow javascript files to be compiled. */, // ""checkJs"": true, /* Report errors in .js files. */ // ""jsx"": ""preserve"", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ ""declaration"": true /* Generates corresponding '.d.ts' file. */, ""declarationMap"": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, // ""sourceMap"": true, /* Generates corresponding '.map' file. */ // ""outFile"": ""./"", /* Concatenate and emit output to single file. */ // ""outDir"": ""./dist"" /* Redirect output structure to the directory. */, // ""rootDir"": ""./"", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ // ""composite"": true, /* Enable project compilation */ // ""tsBuildInfoFile"": ""./"", /* Specify file to store incremental compilation information */ // ""removeComments"": true, /* Do not emit comments to output. */ // ""noEmit"": true, /* Do not emit outputs. */ // ""importHelpers"": true, /* Import emit helpers from 'tslib'. */ // ""downlevelIteration"": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ // ""isolatedModules"": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ /* Strict Type-Checking Options */ ""strict"": true /* Enable all strict type-checking options. */, // ""noImplicitAny"": true, /* Raise error on expressions and declarations with an implied 'any' type. */ // ""strictNullChecks"": true, /* Enable strict null checks. */ // ""strictFunctionTypes"": true, /* Enable strict checking of function types. */ // ""strictBindCallApply"": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ // ""strictPropertyInitialization"": true, /* Enable strict checking of property initialization in classes. */ // ""noImplicitThis"": true, /* Raise error on 'this' expressions with an implied 'any' type. */ // ""alwaysStrict"": true, /* Parse in strict mode and emit ""use strict"" for each source file. */ /* Additional Checks */ // ""noUnusedLocals"": true, /* Report errors on unused locals. */ // ""noUnusedParameters"": true, /* Report errors on unused parameters. */ // ""noImplicitReturns"": true, /* Report error when not all code paths in function return a value. */ // ""noFallthroughCasesInSwitch"": true, /* Report errors for fallthrough cases in switch statement. */ /* Module Resolution Options */ // ""moduleResolution"": ""node"", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ ""baseUrl"": ""./"" /* Base directory to resolve non-absolute module names. */, ""paths"": { /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ /* TODO: Fix alias resolution with cypress */ ""@lib"": [""cypress/lib""], ""@lib/*"": [""cypress/lib/*""], ""@log/browser"": [""cypress/support/customCommands/browserLog""], ""@log/node"": [""cypress/lib/nodeLog""], ""@tasks"": [""cypress/plugins/tasks""], ""@tasks/*"": [""cypress/plugins/tasks/*""] }, // ""rootDirs"": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ // ""typeRoots"": [], /* List of folders to include type definitions from. */ ""types"": [""node"", ""cypress"", ""./types""] /* Type declaration files to be included in compilation. */, // ""allowSyntheticDefaultImports"": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ ""esModuleInterop"": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, // ""preserveSymlinks"": true, /* Do not resolve the real path of symlinks. */ // ""allowUmdGlobalAccess"": true, /* Allow accessing UMD globals from modules. */ /* Source Map Options */ // ""sourceRoot"": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ // ""mapRoot"": "", /* Specify the location where debugger should locate map files instead of generated locations. */ // ""inlineSourceMap"": true, /* Emit a single file with source maps instead of having a separate file. */ // ""inlineSources"": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ /* Experimental Options */ // ""experimentalDecorators"": true, /* Enables experimental support for ES7 decorators. */ // ""emitDecoratorMetadata"": true, /* Enables experimental support for emitting type metadata for decorators. */ /* Advanced Options */ ""skipLibCheck"": true /* Skip type checking of declaration files. */, ""forceConsistentCasingInFileNames"": true /* Disallow inconsistently-cased references to the same file. */, ""resolveJsonModule"": true, ""noEmit"": true // We should not be using transpiled code at all. We only need to run tsc to ensure type checking! }, ""include"": [""cypress/**/*.ts"", ""npm-scripts/**/*.ts"", ""ops/**/*.ts"", ""cypress.json"", ""cypressRunner.ts"", ""customBootstrapCommand.ts""], ""exclude"": [""**/*.ignore.*"", ""**/*ignore*/*"", ""build"", ""dist"", ""node_modules""] } "; RegexOptions options = RegexOptions.Multiline; Regex regex = new Regex(pattern, options); string result = regex.Replace(input, substitution); } }

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 C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx