{"id":26269,"date":"2016-07-21T11:24:10","date_gmt":"2016-07-21T09:24:10","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=26269"},"modified":"2016-07-21T11:24:10","modified_gmt":"2016-07-21T09:24:10","slug":"the-regex-that-killed-stackoverflow","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/","title":{"rendered":"The RegEx that killed StackOverflow"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>Here&#8217;s an <a href=\"http:\/\/stackstatus.net\/post\/147710624694\/outage-postmortem-july-20-2016\">outage postmortem<\/a> from the recent <a href=\"http:\/\/stackoverflow.com\/\">StackOverflow<\/a> downtime. \u00a0It just shows you how easy it is to break things, even they were built by some of the smartest people around. \u00a0Programming is touch and there is no way around it.<\/p>\n<blockquote><p><strong>Technical Details<\/strong><\/p>\n<p>The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space from start and end of a line. A simplified version of the Regex that exposes the same issue would be \\s+$ which to a human looks easy (\u201call the spaces at the end of the string\u201d), but which means quite some work for a simple backtracking Regex engine. The malformed post contained roughly 20,000 consecutive characters of whitespace on a comment line that started with &#8212; play happy sound for player to enjoy. For us, the sound was not happy.<\/p>\n<p>If the string to be matched against contains 20,000 space characters in a row, but not at the end, then the Regex engine will start at the first space, check that it belongs to the \\s character class, move to the second space, make the same check, etc. After the 20,000th space, there is a different character, but the Regex engine expected a space or the end of the string. Realizing it cannot match like this it backtracks, and tries matching \\s+$ starting from the second space, checking 19,999 characters. The match fails again, and it backtracks to start at the third space, etc.<\/p>\n<p>So the Regex engine has to perform a \u201ccharacter belongs to a certain character class\u201d check (plus some additional things) 20,000+19,999+19,998+\u2026+3+2+1 = 199,990,000 times, and that takes a while. This is not classic catastrophic backtracking (talk on backtracking) (performance is O(n\u00b2), not exponential, in length), but it was enough. This regular expression has been replaced with a substring function.<\/p><\/blockquote>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>Here&#8217;s an outage postmortem from the recent StackOverflow downtime. \u00a0It just shows you how easy it is to break things, even they were built by some of the smartest people around. \u00a0Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">The RegEx that killed StackOverflow<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"The RegEx that killed StackOverflow #programming #WebDev #StackOverflow","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[2290,3435,1330],"keyring_services":[],"class_list":["post-26269","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-regular-expressions","tag-stackoverflow","tag-web-development"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Here&#039;s an outage postmortem from the recent StackOverflow downtime. It just shows you how easy it is to break things, even they were built by some of the smartest people around. Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"The RegEx that killed StackOverflow - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"Here&#039;s an outage postmortem from the recent StackOverflow downtime. It just shows you how easy it is to break things, even they were built by some of the smartest people around. Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-07-21T09:24:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-07-21T09:24:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"The RegEx that killed StackOverflow - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Here&#039;s an outage postmortem from the recent StackOverflow downtime. It just shows you how easy it is to break things, even they were built by some of the smartest people around. Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#blogposting\",\"name\":\"The RegEx that killed StackOverflow - Leonid Mamchenkov\",\"headline\":\"The RegEx that killed StackOverflow\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2016-07-21T11:24:10+02:00\",\"dateModified\":\"2016-07-21T11:24:10+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":7,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, Web work, regular expressions, StackOverflow, web development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#listItem\",\"name\":\"The RegEx that killed StackOverflow\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#listItem\",\"position\":4,\"name\":\"The RegEx that killed StackOverflow\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/\",\"name\":\"The RegEx that killed StackOverflow - Leonid Mamchenkov\",\"description\":\"Here's an outage postmortem from the recent StackOverflow downtime. It just shows you how easy it is to break things, even they were built by some of the smartest people around. Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\\\s\\\\u200c]+|[\\\\s\\\\u200c]+$ Which is intended to trim unicode space\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/07\\\/21\\\/the-regex-that-killed-stackoverflow\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2016-07-21T11:24:10+02:00\",\"dateModified\":\"2016-07-21T11:24:10+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"The RegEx that killed StackOverflow - Leonid Mamchenkov","description":"Here's an outage postmortem from the recent StackOverflow downtime. It just shows you how easy it is to break things, even they were built by some of the smartest people around. Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#blogposting","name":"The RegEx that killed StackOverflow - Leonid Mamchenkov","headline":"The RegEx that killed StackOverflow","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2016-07-21T11:24:10+02:00","dateModified":"2016-07-21T11:24:10+02:00","inLanguage":"en-US","commentCount":7,"mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#webpage"},"articleSection":"All, Programming, Technology, Web work, regular expressions, StackOverflow, web development"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#listItem","name":"The RegEx that killed StackOverflow"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#listItem","position":4,"name":"The RegEx that killed StackOverflow","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/","name":"The RegEx that killed StackOverflow - Leonid Mamchenkov","description":"Here's an outage postmortem from the recent StackOverflow downtime. It just shows you how easy it is to break things, even they were built by some of the smartest people around. Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2016-07-21T11:24:10+02:00","dateModified":"2016-07-21T11:24:10+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"The RegEx that killed StackOverflow - Leonid Mamchenkov","og:description":"Here's an outage postmortem from the recent StackOverflow downtime. It just shows you how easy it is to break things, even they were built by some of the smartest people around. Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space","og:url":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2016-07-21T09:24:10+00:00","article:modified_time":"2016-07-21T09:24:10+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"The RegEx that killed StackOverflow - Leonid Mamchenkov","twitter:description":"Here's an outage postmortem from the recent StackOverflow downtime. It just shows you how easy it is to break things, even they were built by some of the smartest people around. Programming is touch and there is no way around it. Technical Details The regular expression was: ^[\\s\\u200c]+|[\\s\\u200c]+$ Which is intended to trim unicode space","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"26269","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-19 20:13:42","updated":"2026-01-15 12:16:45","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tThe RegEx that killed StackOverflow\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"The RegEx that killed StackOverflow","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/07\/21\/the-regex-that-killed-stackoverflow\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":27707,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/06\/20\/regex101-online-regex-editor-and-debugger\/","url_meta":{"origin":26269,"position":0},"title":"Regex101 &#8211; online regex editor and debugger","author":"Leonid Mamchenkov","date":"June 20, 2017","format":false,"excerpt":"Regex101 is an online regular expression editor and debugger. \u00a0You can test your regular expressions against sample data, see if the expression worked, watch it matched, and so on. \u00a0Having an explanation for each part of the regular expression dynamically generated, and a quick reference nearby is super handy too.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/06\/regex101-500x250.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":26978,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/27\/on-coping-from-stackoverflow\/","url_meta":{"origin":26269,"position":1},"title":"On copying from StackOverflow","author":"Leonid Mamchenkov","date":"November 27, 2016","format":false,"excerpt":"Geek and poke does it again ... this time on the subject of copying code from StackOverflow:","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"stackoverflow","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/11\/stackoverflow-353x500.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":16932,"url":"https:\/\/mamchenkov.net\/wordpress\/2012\/11\/22\/my-favorite-regex-of-all-time\/","url_meta":{"origin":26269,"position":2},"title":"My favorite regex of all time","author":"Leonid Mamchenkov","date":"November 22, 2012","format":"link","excerpt":"My favorite regex of all time Make sure to read through comments. \u00a0Funny stuff, if you know even the basics of the regular expressions.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27307,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/09\/the-most-mentioned-books-on-stackoverflow\/","url_meta":{"origin":26269,"position":3},"title":"The Most Mentioned Books On StackOverflow","author":"Leonid Mamchenkov","date":"February 9, 2017","format":false,"excerpt":"Slashdot links to \"The Most Mentioned Books On StackOverflow\". How we did it: We got database dump of all user-contributed content on the Stack Exchange network (can be downloaded here) Extracted questions and answers made on stackoverflow Found all amazon.com links and counted it Created tag-based search for your convenience\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/02\/stackoverflow-books-500x133.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28555,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/07\/stack-overflow-for-teams-is-now-available\/","url_meta":{"origin":26269,"position":4},"title":"Stack Overflow for Teams is Now Available","author":"Leonid Mamchenkov","date":"May 7, 2018","format":false,"excerpt":"StackOverflow, the greatest online resource for developers, has announced the availability of the StackOverflow for Teams.\u00a0 This is a spin off service which allows developer teams to run private instances of StackOverflow for knowledge and information sharing needed for non-public projects. This sounds like a great tool to replace a\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/StackOverflow-Teams-446x500.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":42500,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/04\/13\/stackoverflow-developer-survey-results-2019\/","url_meta":{"origin":26269,"position":5},"title":"StackOverflow: Developer Survey Results 2019","author":"Leonid Mamchenkov","date":"April 13, 2019","format":false,"excerpt":"This year's results for StackOverflow Developer Survey are in. This is probably the largest survey of IT professionals, with nearly 90,000 participating this year. As always, there are plenty of insightful findings and correlations in the results. But one that I was somewhat glad to see was the attitude towards\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/04\/blockchain-work.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/04\/blockchain-work.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/04\/blockchain-work.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=26269"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26269\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=26269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=26269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=26269"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=26269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}