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

/
/

Test String

Code Generator

Generated Code

import Foundation let pattern = #"<script>.*\/\/connect.facebook.net.*<\/script><div[^>]+class=\"fb-(video|post)\".*data-href=\"(.*?)\"[^>]*>.*?<\/div><\/div>"# let regex = try! NSRegularExpression(pattern: pattern) let testString = ##""" <p>จากกรณี นายพิชิต อายุ 23 ปี พนักงานการรถไฟแห่งประเทศไทย ได้โดยสารเครื่องบิน สายการบินไทยไลอ้อนแอร์ เที่ยวบินที่ SL8536 จากท่าอากาศยานดอนเมือง เมื่อวันที่ 1 พ.ย. และได้กล่าวแซวแอร์โฮสเตสว่า มีระเบิดอยู่ภายในกระเป๋าเดินทาง ทำให้เที่ยวบินต้องถูกยกเลิก เพื่อทำการตรวจสอบกระเป๋าผู้โดยสารทุกใบหมด</p> <p><strong>อ่านข่าวที่เกี่ยวข้อง</strong> : <a href="http://news.sanook.com/1892574/">เปิดใจหนุ่มแซวแอร์ฯ กระเป๋ามีระเบิด บอกรู้เท่าไม่ถึงการณ์-เพิ่งเคยบิน</a>&nbsp;</p> <p>ล่าสุด (3 พ.ย.) ในโลกออนไลน์ได้มีการแชร์ข้อความจาก<strong>เฟซบุ๊กแฟนเพจ Crewabs Cabincrew</strong> ได้โพสต์ข้อความเกี่ยวกับกรณีดังกล่าวว่า แอร์ฯซึ่งอยู่บนไฟล์ทที่ตกเป็นข่าวเป็นลูกศิษย์ของตนเอง และได้ทักแชทมาเพื่อระบายความในใจ และอธิบายถึงเหตุการณ์ที่เกิดขึ้นจริงบนเที่ยวบินดังกล่าว</p> <p>เนื่องจากมีคนด่าทอว่าแอร์ฯทำเกินกว่าเหตุ ทำให้เรื่องราวบานปลายและกลายเป็นว่าหนุ่มคนดังกล่าวน่าสงสารน่าเห็นใจนั้น โดยใจความสำคัญมีดังนี้</p> <p>"เห็นด้วยไหมคะว่า ? จากการอ่านข่าว เราจินตนาการไปว่า น้องแอร์ช่วยยกกระเป๋าสัมภาระของหนุ่มรถไฟเก็บ แล้วชายหนุ่มก็อาจจะพูดยิ้มๆแซวๆทำนองว่า เบาๆนะ เดี๋ยวระเบิด ขำกิ๊กกั๊กทำนองล้อเล่น บังเอิญแอร์(ที่เราคิดว่าเคร่งเกิ๊น)ไปฟ้องกัปตัน ทุกคนทำเป็นเรื่องใหญ่โต น้องรถไฟผู้น่าสงสาร แค่ล้อเล่น แต่แอร์ทำเป็นเรื่องใหญ่</p> <p>แต่จากการได้คุยกับน้องแอร์แล้ว น้องระบายคำแรกเลยคือ "หนูเครียดนะพี่ หนูไปทำให้เขาและครอบครัวเขาลำบากรึเปล่า" แต่เรื่องที่เกิดจริงๆ มันไม่ใช่อย่างที่คนทั่วไป(บางท่าน)เข้าใจ</p> <p>น้องเล่าว่า.....<br />ผู้โดยสารมากับเพื่อนๆ ค่ะ นั่งตรงemergency exit(ประตูทางออกฉุกเฉิน) แถว20 หนูก็เช็คcabinตรวจตราความเรียบร้อยก่อนออกบิน เจอกระเป๋าเล็ก(ที่เขาถือมาในวันที่ไปโรงพัก) ขนาดเล็กๆ ประมาณ15x15 cm ได้ เลยจะหยิบเพื่อเก็บให้ เขาก็พูดหน้านิ่งๆ เน้นว่า นิ่งๆ ไม่มียิ้มว่า "สงสัยจะมีระเบิด" หนูหันไปดุด้วยน้ำเสียงจริงจังว่า "พูดแบบนี้ไม่ได้นะคะ มีสิทธิ์จะโดนเชิญลงจากเครื่อง" เขาก็ยังหน้านิ่งและไม่มีท่าทีจะปฏิเสธ</p> <p>ต่อมาสิ่งที่น้องแอร์คนนี้ทำคือ เดินไปแจ้งin charge(ภาษาง่ายๆประมาณตำแหน่งรองหัวหน้าลูกเรือค่ะ) และin chargeก็เดินมาถามให้แน่ใจว่าเขาไม่ได้ล้อเล่น และที่น่ากลัวคือ เขาหน้านิ่งพูดคำเดิม "มีระเบิด" ไม่มีท่าทีว่าจะจีบแอร์อะไรแบบนั้น หน้าซีเรียส เอาจริง ไม่มีใครเดาทางได้ว่าเขาพูดจริงหรือล้อเล่น เพื่อนๆเขาไม่มีใครว่าอะไร in chargeถามย้ำอยู่2รอบ ยังไม่มีการยอมรับว่าแซวเล่นหรืออะไร สีหน้าจริงจังไม่มีหัวเราะหรือยิ้มใดๆ พวกเราจึงแจ้งเพอเซอร์(หัวหน้าลูกเรือ)และต่อไปยังกัปตัน และกัปตันจึงให้ทุกคนรีบอพยพออกจากเครื่อง</p> <p>หลังจากฟังแล้ว Crewabsบอกเลยว่ามันผิดจากที่คิดไว้ เพราะตอนแรกคิดว่าหนุ่มรถไฟคงมีสีหน้ายิ้มๆ หัวเราะทำนองแกล้งแซว แต่น้องแอร์ยืนยัน ถามกี่รอบ หลายรอบก็แล้ว ไม่มียิ้ม ทำหน้านิ่ง และไม่มีการยอมรับว่า ผมล้อเล่นหรือพูดเล่น เป็นใคร ใครจะกล้าบินคะ? จนสุดท้ายเมื่อเรื่องใหญ่ทุกคนต้องออกจากเครื่องเพราะมีระเบิดตามที่อ้าง เพื่อนของเขาจึงมาถามว่า "นี่เรื่องใหญ่เหรอ"</p> <p>แต่สิ่งที่น่าเจ็บใจแทนลูกเรือนักบินในไฟล์ทก็คือ มีคนไปcommentว่า #แอร์ทำเกินไป #สงสารน้องหนุ่มรถไฟ หรือแม้กระทั่งใช้คำหยาบคายต่อว่า</p> <p>Crewabsได้แต่ให้กำลังใจน้องว่า น้องทำถูกแล้วค่ะ เพราะถ้ามันเป็นระเบิดจริง บินขึ้นไป ระเบิดตายกันยกลำ ก็จะมีคนมาด่าหนูอยู่ดีว่า "ทำไมแอร์หละหลวมไม่เคร่งเรื่องความปลอดภัย การที่น้องทำแบบนี้ไม่เพียงเพื่อความปลอดภัย มันยังรักษาชื่อเสียงของสายการบินน้องด้วย"</p> <p>Crewabsเองก็กำลังจะบินกับสายการบินสิงโตแดงเร็วๆนี้ค่ะ ซื้อตั๋วแล้ว ยิ่งเจอข่าวแบบนี้ ยิ่งมั่นใจในพนักงานต้อนรับของสายนี้ แต่สิ่งที่เราควบคุมไม่ได้ คือ ผู้โดยสารมากกว่าค่ะ ใครที่ต่อว่าน้องแอร์และทีม ขอให้ลองคิดใหม่ เห็นต่างได้ แต่อย่าถึงขั้นด่าว่ากันว่าพวกเราเป็นควายเลยนะคะ</p> <p>#ถึงเป็นควาย #ก็เซฟชีวิตผู้โดยสารทุกคนจากความชิบหายมานักต่อนักแล้วนะคะ"</p> <p><em>ขอขอบคุณข้อมูลจาก <a href="https://www.facebook.com/CrewabsCabincrew/photos/a.163266007065328.35057.162290157162913/981295968595657/?type=3">เฟซบุ๊ก Crewabs Cabincrew</a></em></p> <script type="text/javascript">// <![CDATA[ (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/th_TH/sdk.js#xfbml=1&version=v2.3"; fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk')); // ]]></script> <div class="fb-post" data-href="https://www.facebook.com/CrewabsCabincrew/photos/a.163266007065328.35057.162290157162913/981295968595657/?type=3" data-width="500"> <div class="fb-xfbml-parse-ignore"> <blockquote cite="https://www.facebook.com/CrewabsCabincrew/photos/a.163266007065328.35057.162290157162913/981295968595657/?type=3"> <p>จากใจแอร์สาวบนไฟล์ทที่โดนหนุ่มรถไฟจีบด้วยมุก"ระเบิด"กรณีหนุ่มรถไฟ แซวแอร์ไทยไลอ้อน อยากขอพื้นที่ชี้แจงให้ลูกเรือสาวในไ...</p> Posted by <a href="https://www.facebook.com/CrewabsCabincrew/">Crewabs Cabincrew</a> on&nbsp;<a href="https://www.facebook.com/CrewabsCabincrew/photos/a.163266007065328.35057.162290157162913/981295968595657/?type=3">3 พฤศจิกายน 2015</a></blockquote> </div> </div> """## let stringRange = NSRange(location: 0, length: testString.utf16.count) if let firstMatch = regex.firstMatch(in: testString, range: stringRange) { let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) } print(result) } else { print("No matches were found.") }

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 Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression