[{"data":1,"prerenderedAt":951},["ShallowReactive",2],{"footer:default":3,"header:blog":202,"story:navigation\u002Fsearch:blog":305,"blog:blog\u002Fbest-practices":344,"pagination:\u002Fblog\u002Fbest-practices\u002F:5":360,"_apollo:default":950},{"name":4,"created_at":5,"published_at":6,"updated_at":7,"id":8,"uuid":9,"content":10,"slug":192,"full_slug":193,"sort_by_date":194,"position":195,"tag_list":196,"is_startpage":59,"parent_id":197,"meta_data":194,"group_id":198,"first_published_at":199,"release_id":194,"lang":200,"path":194,"alternates":201,"default_full_slug":194,"translated_slugs":194},"Default Footer","2024-08-09T18:06:59.024Z","2026-10-01T20:58:53.320Z","2026-10-01T20:58:53.333Z",10082753,"e59e67ac-248a-482f-84a1-53d4f318186a",{"_uid":11,"about":12,"logos":13,"socials":19,"sections":47,"component":174,"cta_title":175,"bottom_links":176,"cta_subtitle":190,"cta_button_link":191,"cta_button_text":124},"830983f5-c4c4-43c8-b150-86a5e3fa6dc8","Foxy’s hosted cart & payment page allow you to sell anything, using your existing website or platform.",[14],{"id":15,"alt":16,"name":16,"focus":16,"title":16,"filename":17,"copyright":16,"fieldtype":18},14760,"","https:\u002F\u002Fa-us.storyblok.com\u002Ff\u002F1001040\u002Fx\u002F3b030847ec\u002Fb-corp.svg","asset",[20,29,35,41],{"_uid":21,"icon":22,"link":23,"name":27,"component":28},"faf0a618-ea94-42ea-9182-03be18c43216","fa-facebook",{"id":16,"url":24,"linktype":25,"fieldtype":26,"cached_url":24},"https:\u002F\u002Fwww.facebook.com\u002Ffoxycart","url","multilink","Facebook","footer___social",{"_uid":30,"icon":31,"link":32,"name":34,"component":28},"14309c18-7e79-423e-b375-34555bac0811","fa-instagram",{"id":16,"url":33,"linktype":25,"fieldtype":26,"cached_url":33},"https:\u002F\u002Fwww.instagram.com\u002Ffoxy_io","Instagram",{"_uid":36,"icon":37,"link":38,"name":40,"component":28},"8f7fe7cf-0dd3-4596-8334-226ea466716a","fa-linkedin",{"id":16,"url":39,"linktype":25,"fieldtype":26,"cached_url":39},"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Ffoxycart.com","LinkedIn",{"_uid":42,"icon":43,"link":44,"name":46,"component":28},"90a675b4-dd97-40b5-be09-00a87223d4c5","fa-youtube",{"id":16,"url":45,"linktype":25,"fieldtype":26,"cached_url":45},"https:\u002F\u002Fwww.youtube.com\u002Fuser\u002Ffoxycart","Youtube",[48,80,125,147],{"_uid":49,"name":50,"items":51,"component":79},"82849945-282f-488c-b18d-a8d2252f514a","Company",[52,61,67,73],{"_uid":53,"link":54,"title":58,"new_tab":59,"component":60},"1f699ab1-938b-4d9d-9825-aabcbe6f57fe",{"id":55,"url":16,"linktype":56,"fieldtype":26,"cached_url":57},"63634293-a749-4226-9439-9f38ee6dcda0","story","about-us","About Us",false,"footer___menu_items",{"_uid":62,"link":63,"title":66,"new_tab":59,"component":60},"b26b00f1-a0e7-4be2-8ab3-428b8cc841f8",{"id":64,"url":16,"linktype":56,"fieldtype":26,"cached_url":65},"26cb7c55-faed-4a77-a291-1552d4111b3e","how-foxy-works","How Foxy Works",{"_uid":68,"link":69,"title":72,"new_tab":59,"component":60},"b40c68a0-1ceb-4226-9515-6176534f61fe",{"id":70,"url":16,"linktype":56,"fieldtype":26,"cached_url":71},"dc6657d7-7f4f-4c0d-b781-e971b038ee26","for-good","Foxy For Good",{"_uid":74,"link":75,"title":78,"new_tab":59,"component":60},"3ad0c134-bef9-4fff-b891-e09f16109036",{"id":76,"url":16,"linktype":56,"fieldtype":26,"cached_url":77},"23cae210-baf4-4588-9862-d09f4f52ccd2","brand-assets","Brand Assets","footer___section",{"_uid":81,"name":82,"items":83,"component":79},"a6805fa8-ac60-47f1-b8f0-f27aded0afbe","Product",[84,90,96,102,108,114,120],{"_uid":85,"link":86,"title":89,"new_tab":59,"component":60},"b39c8a4e-2383-486f-b76a-11fbb15d8134",{"id":87,"url":16,"linktype":56,"fieldtype":26,"cached_url":88},"bb04690f-fe98-4ce6-80be-05b950f2364f","features\u002F","Features",{"_uid":91,"link":92,"title":95,"new_tab":59,"component":60},"efca096d-3c40-467c-b4db-c17056d02294",{"id":93,"url":16,"linktype":56,"fieldtype":26,"cached_url":94},"b421cf65-f02d-4b48-a8e8-55e7bd472976","use-cases\u002F","Use Cases",{"_uid":97,"link":98,"title":101,"new_tab":59,"component":60},"64f8a41f-c181-433d-bc0a-fc94e71ecbf6",{"id":99,"url":16,"linktype":56,"fieldtype":26,"cached_url":100},"c450c58d-761d-48c0-a9af-0b064611689b","pricing","Pricing",{"_uid":103,"link":104,"title":107,"new_tab":59,"component":60},"6e0b287f-fd8c-4146-9e0e-0ab0b5c9ce3c",{"id":105,"url":16,"linktype":56,"fieldtype":26,"cached_url":106},"fab20ad9-e76a-4947-b709-3a6fdfa88028","blog\u002Fcategories\u002Fproduct-updates","Product Updates",{"_uid":109,"link":110,"title":113,"new_tab":59,"component":60},"47e5a074-a6b5-4f1c-8c2f-89a2ae9f83eb",{"id":111,"url":16,"linktype":56,"fieldtype":26,"cached_url":112},"d2c83612-d611-47f3-a3b4-ca7fe08540b8","changelogs\u002F","Changelogs",{"_uid":115,"link":116,"title":119,"new_tab":59,"component":60},"9c2704ed-6d9f-43e1-9e67-c8d91c083288",{"id":117,"url":16,"linktype":56,"fieldtype":26,"cached_url":118},"056a7857-b18f-4025-8f97-91a38fc19bc8","compare\u002F","Compare",{"_uid":121,"link":122,"title":124,"new_tab":59,"component":60},"5f2db35b-674b-406a-8fa7-d246633af9fe",{"id":16,"url":123,"linktype":25,"fieldtype":26,"cached_url":123},"https:\u002F\u002Fadmin.foxy.io\u002Fsign-up","Try Foxy Free",{"_uid":126,"name":127,"items":128,"component":79},"63fa1f29-4252-4640-9922-fe310e69e54a","Security",[129,135,141],{"_uid":130,"link":131,"title":134,"new_tab":59,"component":60},"1158ddb6-9eb0-466f-8eb6-7ca2ae66c8b8",{"id":132,"url":16,"linktype":56,"fieldtype":26,"cached_url":133},"1f58fb2c-8681-4742-b6e8-09999beae9f6","security-contact","Security Contact",{"_uid":136,"link":137,"title":140,"new_tab":59,"component":60},"9a79c54a-6022-4dfd-854b-766f5e4703ba",{"id":138,"url":16,"linktype":56,"fieldtype":26,"cached_url":139},"55cbfcc3-425a-4261-8037-54e919851d2d","pci","PCI Compliance",{"_uid":142,"link":143,"title":146,"new_tab":59,"component":60},"0b85f5b6-9534-4071-b323-b39d053dd4d7",{"id":144,"url":16,"linktype":56,"fieldtype":26,"cached_url":145},"c3ac0fe3-83e2-4879-afbd-d4c83e1590df","help\u002Farticles\u002Four-official-domains-public-code","Domains & Codebases",{"_uid":148,"name":149,"items":150,"component":79},"998ded67-d107-49f4-8154-ca6be51671ec","Support",[151,157,163,168],{"_uid":152,"link":153,"title":156,"new_tab":59,"component":60},"594ffd35-3049-4004-bb08-0db568ebd819",{"id":154,"url":16,"linktype":56,"fieldtype":26,"cached_url":155},"4a679eb7-662d-4ea4-a976-5a2acbf0b663","help\u002F","Help Center",{"_uid":158,"link":159,"title":161,"new_tab":162,"component":60},"61e0b7c8-aadf-419b-a339-b3ccabc65bf4",{"id":16,"url":160,"linktype":25,"fieldtype":26,"cached_url":160},"https:\u002F\u002Fapi.foxycart.com\u002F","API Documentation",true,{"_uid":164,"link":165,"title":167,"new_tab":162,"component":60},"fd67a89e-1c54-4d31-94b5-64be999062d6",{"id":16,"url":166,"linktype":25,"fieldtype":26,"cached_url":166},"https:\u002F\u002Fstatus.foxy.io\u002F","System Status",{"_uid":169,"link":170,"title":173,"new_tab":59,"component":60},"231a6f71-e996-4ad4-b033-d4d5542f34f0",{"id":171,"url":16,"linktype":56,"fieldtype":26,"cached_url":172},"01e4e370-f9b9-45af-8fa9-f15540699b0d","contact","Contact Us","footer","Get started with our *unlimited free trial*.",[177,184],{"_uid":178,"link":179,"text":182,"component":183},"f0b77210-2632-45a2-8436-e57cad84d01a",{"id":180,"url":16,"linktype":56,"fieldtype":26,"cached_url":181},"60ba16a2-c1f4-485f-b978-8d2eeeafbf5a","terms-of-service","Terms of Service","footer___bottom_links",{"_uid":185,"link":186,"text":189,"component":183},"4bd497b0-993f-4b4d-a5b7-8a49c7c8fec9",{"id":187,"url":16,"linktype":56,"fieldtype":26,"cached_url":188},"332302b9-1d18-4016-b9c8-9b33c72d782b","privacy-policy","Privacy Policy","No credit card required.",{"id":16,"url":123,"linktype":25,"fieldtype":26,"cached_url":123},"default-footer","navigation\u002Fdefault-footer",null,50,[],10082747,"11006268-07f9-41e9-96f3-c51fb723399d","2022-09-21T20:39:02.357Z","default",[],{"name":203,"created_at":204,"published_at":205,"updated_at":206,"id":207,"uuid":208,"content":209,"slug":298,"full_slug":299,"sort_by_date":194,"position":300,"tag_list":301,"is_startpage":59,"parent_id":197,"meta_data":194,"group_id":302,"first_published_at":303,"release_id":194,"lang":200,"path":194,"alternates":304,"default_full_slug":194,"translated_slugs":194},"Blog Header","2024-08-09T18:06:34.232Z","2024-12-20T16:33:42.571Z","2024-12-20T16:33:42.584Z",10082750,"3d37f2a3-56a0-440d-910d-46752bc3ad68",{"_uid":210,"badge":211,"items":212,"buttons":261,"subitems":262,"alignment":277,"component":278,"badge_link":279,"top_menu_items":282},"e33a7694-80ed-4829-a536-ccc69a1ee4a6","Blog",[213,221,228,234,241,248],{"_uid":214,"link":215,"title":218,"new_tab":59,"submenu":219,"component":220},"da52f9a1-b72b-4956-8c38-d53c8f404a08",{"id":216,"url":16,"linktype":56,"fieldtype":26,"cached_url":217},"bef9b718-6bb9-4667-942a-b128d9c81d46","blog\u002Fcategories\u002Fhow-to","How To",[],"header___item",{"_uid":222,"link":223,"title":226,"new_tab":59,"submenu":227,"component":220},"6d66bf9d-847a-4fce-8ed6-02bf4ad3e616",{"id":224,"url":16,"linktype":56,"fieldtype":26,"cached_url":225},"dce05794-d738-496b-a9e8-034faf3991a0","blog\u002Fcategories\u002Fbest-practices","Best Practices",[],{"_uid":229,"link":230,"title":127,"new_tab":59,"submenu":233,"component":220},"bfbc1f59-d307-403b-a985-4624cbe6a4d5",{"id":231,"url":16,"linktype":56,"fieldtype":26,"cached_url":232},"889da5d5-51b5-426a-a01e-0b724c9a8690","blog\u002Fcategories\u002Fsecurity",[],{"_uid":235,"link":236,"title":239,"new_tab":59,"submenu":240,"component":220},"c6ae2e48-c06d-4a28-8768-6db0402ffddf",{"id":237,"url":16,"linktype":56,"fieldtype":26,"cached_url":238},"c8562e56-bd84-4a0b-9238-714040642e2a","blog\u002Fcategories\u002Fmarketing","Marketing",[],{"_uid":242,"link":243,"title":246,"new_tab":59,"submenu":247,"component":220},"01f12d6e-1bb9-41bc-b7b2-034ecbee0d84",{"id":244,"url":16,"linktype":56,"fieldtype":26,"cached_url":245},"162d0ab2-b116-490f-9561-49716c21307a","blog\u002Fcategories\u002Fculture","Culture",[],{"_uid":249,"link":250,"title":251,"new_tab":59,"submenu":252,"component":220},"5fdd716b-74c1-4a5f-9b30-893ede39929d",{"id":16,"url":16,"linktype":56,"fieldtype":26,"cached_url":16},"What's New",[253,257],{"_uid":254,"link":255,"title":107,"new_tab":59,"submenu":256,"component":220},"d33be302-8cfc-4be2-a623-155ef5c9bcd6",{"id":105,"url":16,"linktype":56,"fieldtype":26,"cached_url":106},[],{"_uid":258,"link":259,"title":113,"new_tab":59,"submenu":260,"component":220},"e45ba655-019c-4d5a-ba56-d89057b9c399",{"id":111,"url":16,"linktype":56,"fieldtype":26,"cached_url":112},[],[],[263,269,274],{"_uid":264,"link":265,"text":268,"component":183},"47d30abe-ca41-40a0-96a9-edd30145130a",{"id":266,"url":16,"linktype":56,"fieldtype":26,"cached_url":267},"1e9858a9-397f-45fd-9b69-a6e661ebe6a6","home","Home",{"_uid":270,"link":271,"text":273,"component":183},"b196923b-1101-4127-91bb-c2c9d3077c4b",{"id":64,"url":16,"linktype":56,"fieldtype":26,"cached_url":272},"what-foxy-does","What's Foxy",{"_uid":275,"link":276,"text":124,"component":183},"e7943c1b-5f0b-44c5-a63e-aba38c7de9fd",{"id":16,"url":123,"linktype":25,"fieldtype":26,"cached_url":123},"right","header",{"id":280,"url":16,"linktype":56,"fieldtype":26,"cached_url":281},"6da84274-ebbf-4c71-9bc8-4eba47a6cb15","blog\u002F",[283,289,294],{"_uid":284,"link":285,"title":287,"new_tab":59,"submenu":288,"component":220},"a9601db4-b3ab-40ff-b9a6-1d886aa317cc",{"id":266,"url":16,"linktype":56,"fieldtype":26,"cached_url":286},"homepage","Foxy Home",[],{"_uid":290,"link":291,"title":292,"new_tab":59,"submenu":293,"component":220},"e5c54802-434c-4f90-a162-00a38e1d4b0d",{"id":16,"url":16,"linktype":56,"fieldtype":26,"cached_url":16},"What's Foxy?",[],{"_uid":295,"link":296,"title":124,"new_tab":59,"submenu":297,"component":220},"8a52540f-18f1-4f38-b7da-17f60690aaee",{"id":16,"url":16,"linktype":56,"fieldtype":26,"cached_url":16},[],"blog-header","navigation\u002Fblog-header",-10,[],"f4698a33-9da4-417e-a96b-2ca7b8fb4d60","2022-09-27T17:04:43.424Z",[],{"name":306,"created_at":307,"published_at":308,"updated_at":309,"id":310,"uuid":311,"content":312,"slug":335,"full_slug":338,"sort_by_date":194,"position":339,"tag_list":340,"is_startpage":59,"parent_id":197,"meta_data":194,"group_id":341,"first_published_at":342,"release_id":194,"lang":200,"path":194,"alternates":343,"default_full_slug":194,"translated_slugs":194},"Search","2024-10-21T22:08:54.973Z","2025-05-26T09:17:25.790Z","2025-05-26T09:17:25.804Z",13592003,"14cbc359-9ac1-4a7a-a8de-ad4ac8ef26d4",{"_uid":313,"name":306,"indices":314,"summary":16,"component":335,"primary_image":336},"5e4a56e8-76f1-4790-b3a7-70f1be97d042",[315,320,325,330],{"key":316,"_uid":317,"icon":16,"name":318,"component":319},"all","c12a3210-7323-4273-8217-5215e52efe84","All","index",{"key":321,"_uid":322,"icon":323,"name":324,"component":319},"help_center_article","5acff080-95e4-44d3-8dcf-1b19720af382","fa-file-alt","Articles",{"key":326,"_uid":327,"icon":328,"name":329,"component":319},"help_center_guide","b8fbc206-c083-471e-a1f0-0ebeb90a669d","fa-book","Guides",{"key":331,"_uid":332,"icon":333,"name":334,"component":319},"blog_post","23419e83-2e56-4c4c-8a05-9fd1b3c9a9bd","fa-file-image","Blog Posts","search",{"id":194,"alt":194,"name":16,"focus":194,"title":194,"source":194,"filename":16,"copyright":194,"fieldtype":18,"meta_data":337},{},"navigation\u002Fsearch",60,[],"11e1fd31-95cd-4fc9-b736-8b8910663e6c","2024-10-21T23:17:05.904Z",[],{"name":226,"created_at":345,"published_at":346,"updated_at":347,"id":348,"uuid":224,"content":349,"slug":353,"full_slug":225,"sort_by_date":194,"position":354,"tag_list":355,"is_startpage":59,"parent_id":356,"meta_data":194,"group_id":357,"first_published_at":358,"release_id":194,"lang":200,"path":194,"alternates":359,"default_full_slug":194,"translated_slugs":194},"2023-03-24T17:10:20.360Z","2023-03-24T17:27:15.000Z","2023-03-24T17:17:36.787Z",64354,{"_uid":350,"name":226,"component":351,"description":352},"5c4c2b14-565f-4869-bf2c-e6cc175b51da","blog_category","Tips and advice for running a successful ecommerce website.","best-practices",10,[],3266,"a5ce46e7-6923-4ea8-a30d-3fee453df8b1","2023-03-24T17:27:15.733Z",[],{"data":361,"headers":923,"perPage":948,"total":949},{"stories":362,"cv":912,"rels":913,"links":922},[363,435,637,780],{"name":364,"created_at":365,"published_at":346,"updated_at":366,"id":367,"uuid":368,"content":369,"slug":427,"full_slug":428,"sort_by_date":194,"position":429,"tag_list":430,"is_startpage":59,"parent_id":431,"meta_data":194,"group_id":432,"first_published_at":433,"release_id":194,"lang":200,"path":194,"alternates":434,"default_full_slug":194,"translated_slugs":194},"The Growing Importance of Design","2023-03-24T17:13:06.297Z","2023-03-24T17:20:34.254Z",64562,"ecf0d612-71aa-4797-ab67-fd46325438d0",{"_uid":370,"title":364,"content":371,"summary":405,"component":331,"categories":411},"939a7149-4db4-420a-bad6-539f8d5cedea",{"type":372,"content":373},"doc",[374,380,393],{"type":375,"content":376},"paragraph",[377],{"text":378,"type":379},"When building FoxyCart years ago, we had designers and developers in mind. We understood the importance of design. It seems the rest of the world is starting to realize that as well.","text",{"type":375,"content":381},[382,384,391],{"text":383,"type":379},"Joshua Porter over at Bokardo.com has a ",{"text":385,"type":379,"marks":386},"great post",[387],{"type":388,"attrs":389},"link",{"href":390,"title":194},"http:\u002F\u002Fbokardo.com\u002Farchives\u002Fthe-growing-importance-of-design\u002F",{"text":392,"type":379}," on this topic we figured you’d enjoy.",{"type":375,"content":394},[395,397,403],{"text":396,"type":379},"Stay tuned for some wickedly cool screencasts on how to customize the design of your FoxyCart checkout page using the FireBug and ",{"text":398,"type":379,"marks":399},"Web Developer",[400],{"type":388,"attrs":401},{"href":402,"title":194},"https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002F60?id=60",{"text":404,"type":379}," toolbars. I’ve seen ’em, and they’re good stuff.",{"type":372,"content":406},[407],{"type":375,"content":408},[409],{"text":410,"type":379},"When building FoxyCart years ago, we had designers and developers in mind. We understood the importance of design. It seems the rest of the world is starting to realize that as well. Joshua Porter over at Bokardo.com has a great post on this topic we figured you’d enjoy. Stay tuned for some wickedly cool screencasts […]",[412,416],{"name":226,"created_at":345,"published_at":346,"updated_at":347,"id":348,"uuid":224,"content":413,"slug":353,"full_slug":225,"sort_by_date":194,"position":354,"tag_list":414,"is_startpage":59,"parent_id":356,"meta_data":194,"group_id":357,"first_published_at":358,"release_id":194,"lang":200,"path":194,"alternates":415,"default_full_slug":194,"translated_slugs":194,"_stopResolving":162},{"_uid":350,"name":226,"component":351,"description":352},[],[],{"name":239,"created_at":417,"published_at":346,"updated_at":418,"id":419,"uuid":237,"content":420,"slug":423,"full_slug":238,"sort_by_date":194,"position":195,"tag_list":424,"is_startpage":59,"parent_id":356,"meta_data":194,"group_id":425,"first_published_at":358,"release_id":194,"lang":200,"path":194,"alternates":426,"default_full_slug":194,"translated_slugs":194,"_stopResolving":162},"2023-03-24T17:10:23.525Z","2023-03-24T17:17:35.456Z",64358,{"_uid":421,"name":239,"component":351,"description":422},"24be14a7-ad23-4a00-afce-6bcffc9113cc","Marketing advice for merchants, developers, and designers.","marketing",[],"5a0230b1-f01f-4152-8cb7-cecf8f7c34b1",[],"the-growing-importance-of-design","blog\u002Fposts\u002Fthe-growing-importance-of-design",1770,[],3267,"dbb36516-86c8-45f5-81b4-b7bfe8342abc","2008-06-07T03:15:00.000Z",[],{"name":436,"created_at":437,"published_at":346,"updated_at":438,"id":439,"uuid":440,"content":441,"slug":630,"full_slug":631,"sort_by_date":194,"position":632,"tag_list":633,"is_startpage":59,"parent_id":431,"meta_data":194,"group_id":634,"first_published_at":635,"release_id":194,"lang":200,"path":194,"alternates":636,"default_full_slug":194,"translated_slugs":194},"Resources for Regular Expressions","2023-03-24T17:13:09.210Z","2023-03-24T17:20:42.621Z",64566,"e9b7bb46-2eb1-4c29-81e9-2cc1d1c6196a",{"_uid":442,"title":436,"content":443,"summary":619,"component":331,"categories":625},"0b58601a-eef7-4b8e-8d09-9a0fd44a9eed",{"type":372,"content":444},[445,449,456,460,478,482,525,530,534,555,560],{"type":375,"content":446},[447],{"text":448,"type":379},"Just wanted to share a few nice regular expression resources for the next time you need to use regex.",{"type":450,"attrs":451,"content":453},"heading",{"level":452},2,[454],{"text":455,"type":379},"RegExhibit: Test regular expressions as you type",{"type":375,"content":457},[458],{"text":459,"type":379},"If you’re on a Mac and you don’t have RegExhibit yet, you should. It allows you to fine tune your regular expressions live. If you’ve done any work with regex, you might have an idea of how handy that is. Additionally, it will color code your groups, which is incredibly handy for figuring out which pieces are being matched with which groups. Particularly handy when you have multiple and\u002For nested groups in a very long pattern.",{"type":375,"content":461},[462,468,470,476],{"text":463,"type":379,"marks":464},"Download RegExhibit",[465],{"type":388,"attrs":466},{"href":467,"title":194},"http:\u002F\u002Fhomepage.mac.com\u002Froger_jolly\u002Fsoftware\u002Findex.html",{"text":469,"type":379}," on ",{"text":471,"type":379,"marks":472},"MacUpdate",[473],{"type":388,"attrs":474},{"href":475,"title":194},"http:\u002F\u002Fwww.macupdate.com\u002Finfo.php\u002Fid\u002F25327\u002Fregexhibit",{"text":477,"type":379},".",{"type":375,"content":479},[480],{"text":481,"type":379},"If you’re on Windows, fear not. There are a few options (that I haven’t used personally, but I saved you the trouble of Googling it yourself):",{"type":483,"attrs":484,"content":485},"bullet_list",{"tight":59},[486,499,513],{"type":487,"content":488},"list_item",[489],{"type":375,"content":490},[491,497],{"text":492,"type":379,"marks":493},"RegExTester",[494],{"type":388,"attrs":495},{"href":496,"title":194},"http:\u002F\u002Fwww.codeproject.com\u002FKB\u002Fstring\u002Fregextester.aspx",{"text":498,"type":379},", which looks very similar to RegExhibit.",{"type":487,"content":500},[501],{"type":375,"content":502},[503,505,511],{"text":504,"type":379},"A ",{"text":506,"type":379,"marks":507},"Vista gadget",[508],{"type":388,"attrs":509},{"href":510,"title":194},"http:\u002F\u002Fwww.softpedia.com\u002Fget\u002FWindows-Widgets\u002FWidget-Miscellaneous\u002FRegular-Expression-Tester.shtml",{"text":512,"type":379}," to test regular expressions.",{"type":487,"content":514},[515],{"type":375,"content":516},[517,523],{"text":518,"type":379,"marks":519},"RegexDesigner",[520],{"type":388,"attrs":521},{"href":522,"title":194},"http:\u002F\u002Fwww.sellsbrothers.com\u002Ftools\u002F#regexd",{"text":524,"type":379},", more for .NET.",{"type":450,"attrs":526,"content":527},{"level":452},[528],{"text":529,"type":379},"Cheat Sheets",{"type":375,"content":531},[532],{"text":533,"type":379},"Not much to say other than download and print out the following:",{"type":483,"attrs":535,"content":536},{"tight":59},[537,543,549],{"type":487,"content":538},[539],{"type":375,"content":540},[541],{"text":542,"type":379},"Regular Expressions Cheat Sheet from ILoveJackDaniel’s.",{"type":487,"content":544},[545],{"type":375,"content":546},[547],{"text":548,"type":379},"PHP Cheat Sheet which also contains some regex, also from ILoveJackDaniel’s.",{"type":487,"content":550},[551],{"type":375,"content":552},[553],{"text":554,"type":379},"Javascript Cheat Sheet from everybody’s favorite, ILoveJackDaniel’s.",{"type":450,"attrs":556,"content":557},{"level":452},[558],{"text":559,"type":379},"Links of Interest",{"type":483,"attrs":561,"content":562},{"tight":59},[563,575,588,607],{"type":487,"content":564},[565],{"type":375,"content":566},[567,573],{"text":568,"type":379,"marks":569},"Regular-Expressions.info",[570],{"type":388,"attrs":571},{"href":572,"title":194},"http:\u002F\u002Fwww.regular-expressions.info\u002F",{"text":574,"type":379}," is probably the best site on regular expressions on the internet.",{"type":487,"content":576},[577],{"type":375,"content":578},[579,581,587],{"text":580,"type":379},"Regular expressions on ",{"text":582,"type":379,"marks":583},"Wikipedia",[584],{"type":388,"attrs":585},{"href":586,"title":194},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRegular_expression",{"text":477,"type":379},{"type":487,"content":589},[590],{"type":375,"content":591},[592,598,600,606],{"text":593,"type":379,"marks":594},"Regular Expression Library",[595],{"type":388,"attrs":596},{"href":597,"title":194},"http:\u002F\u002Fregexlib.com\u002F",{"text":599,"type":379},", a user-submitted library of regular expression patterns. Not as fun as writing them yourself, but worth knowing about. Also has a ",{"text":601,"type":379,"marks":602},"regular expression tester",[603],{"type":388,"attrs":604},{"href":605,"title":194},"http:\u002F\u002Fregexlib.com\u002FRETester.aspx",{"text":477,"type":379},{"type":487,"content":608},[609],{"type":375,"content":610},[611,617],{"text":612,"type":379,"marks":613},"regextester.com",[614],{"type":388,"attrs":615},{"href":616,"title":194},"http:\u002F\u002Fwww.regextester.com\u002F",{"text":618,"type":379},", test your patterns online.",{"type":372,"content":620},[621],{"type":375,"content":622},[623],{"text":624,"type":379},"Just wanted to share a few nice regular expression resources for the next time you need to use regex. RegExhibit: Test regular expressions as you type If you’re on a Mac and you don’t have RegExhibit yet, you should. It allows you to fine tune your regular expressions live. If you’ve done any work with […]",[626],{"name":226,"created_at":345,"published_at":346,"updated_at":347,"id":348,"uuid":224,"content":627,"slug":353,"full_slug":225,"sort_by_date":194,"position":354,"tag_list":628,"is_startpage":59,"parent_id":356,"meta_data":194,"group_id":357,"first_published_at":358,"release_id":194,"lang":200,"path":194,"alternates":629,"default_full_slug":194,"translated_slugs":194,"_stopResolving":162},{"_uid":350,"name":226,"component":351,"description":352},[],[],"resources-for-regular-expressions","blog\u002Fposts\u002Fresources-for-regular-expressions",1520,[],"8771724d-5589-4b63-bad1-5416045a2173","2008-03-10T03:35:00.000Z",[],{"name":638,"created_at":639,"published_at":346,"updated_at":640,"id":641,"uuid":642,"content":643,"slug":773,"full_slug":774,"sort_by_date":194,"position":775,"tag_list":776,"is_startpage":59,"parent_id":431,"meta_data":194,"group_id":777,"first_published_at":778,"release_id":194,"lang":200,"path":194,"alternates":779,"default_full_slug":194,"translated_slugs":194},"“Passive Groups” in Regular Expressions","2023-03-24T17:13:10.179Z","2023-03-24T17:20:47.316Z",64567,"6f738121-d011-4dd6-90bb-178b8435242a",{"_uid":644,"title":638,"content":645,"summary":762,"component":331,"categories":768},"37af882c-9585-47f2-835f-04e54d62536a",{"type":372,"content":646},[647,652,672,684,690,701,707,719,725,729,735,751,755],{"type":450,"attrs":648,"content":649},{"level":452},[650],{"text":651,"type":379},"The Dark Corners of Regex: Passive Groups",{"type":375,"content":653},[654,656,662,664,670],{"text":655,"type":379},"If you’re a ",{"text":657,"type":379,"marks":658},"regex nerd",[659],{"type":388,"attrs":660},{"href":661,"title":194},"http:\u002F\u002Fxkcd.com\u002F208\u002F",{"text":663,"type":379}," like I am, you probably take pride in knowing all sorts of neat syntax to add to your patterns. My current favorite is the ",{"text":665,"type":379,"marks":666},"negative lookbehind",[667],{"type":388,"attrs":668},{"href":669,"title":194},"http:\u002F\u002Fwww.regular-expressions.info\u002Flookaround.html",{"text":671,"type":379},", because like I said, I really am that big a nerd.",{"type":375,"content":673},[674,676,682],{"text":675,"type":379},"Even with my longstanding love of regex, however, I was unaware of a tiny but handy little bit of functionality called “passive groups”. It’s just like a ",{"text":677,"type":379,"marks":678},"regular group",[679],{"type":388,"attrs":680},{"href":681,"title":194},"http:\u002F\u002Fwww.regular-expressions.info\u002Fbrackets.html",{"text":683,"type":379},", but it doesn’t create a backreference (ie. it’s effectively discarded once the match is made).",{"type":450,"attrs":685,"content":687},{"level":686},3,[688],{"text":689,"type":379},"An Example of Passive Groups",{"type":375,"content":691},[692,694,699],{"text":693,"type":379},"A pattern with a regular group (",{"text":695,"type":379,"marks":696},"([^“\\’;]+)",[697],{"type":698},"code",{"text":700,"type":379},"), which creates a backreference for later use:",{"type":375,"content":702},[703],{"text":704,"type":379,"marks":705},"import [\"\\']?([^\"\\';]+)[\"\\']?;",[706],{"type":698},{"type":375,"content":708},[709,711,717],{"text":710,"type":379},"That pattern will match import statements in CSS, but it won’t match an “",{"text":712,"type":379,"marks":713},"old style",[714],{"type":388,"attrs":715},{"href":716,"title":194},"http:\u002F\u002Fcss-discuss.incutio.com\u002F?page=ImportHack",{"text":718,"type":379},"” import statement:",{"type":375,"content":720},[721],{"text":722,"type":379,"marks":723},"import ”style.css“; \u002F* will be matched *\u002F   `import url('style.css'); \u002F* will not be matched *\u002F` ",[724],{"type":698},{"type":375,"content":726},[727],{"text":728,"type":379},"So we need to optionally match the “url()” bit, but we really don’t need that little bit to create a backreference. In comes the passive groups:",{"type":375,"content":730},[731],{"text":732,"type":379,"marks":733},"import (?:url\\()?[”\\’]?([^“\\’;]+)[”\\’]? (?:\\))?;",[734],{"type":698},{"type":375,"content":736},[737,739,743,745,749],{"text":738,"type":379},"Notice the passive group is ",{"text":740,"type":379,"marks":741},"(?:match)",[742],{"type":698},{"text":744,"type":379},", versus ",{"text":746,"type":379,"marks":747},"(match)",[748],{"type":698},{"text":750,"type":379},". A nice benefit is that you can modify your patterns without needing to change any code that uses the backreferences.",{"type":375,"content":752},[753],{"text":754,"type":379},"I wouldn’t blog about it if Google had any idea what it was, but somehow there’s almost nothing (seriously) about “passive groups” in a Google search.",{"type":375,"content":756},[757],{"text":758,"type":379,"marks":759},"¡Fin!",[760],{"type":761},"italic",{"type":372,"content":763},[764],{"type":375,"content":765},[766],{"text":767,"type":379},"The Dark Corners of Regex: Passive Groups If you’re a regex nerd like I am, you probably take pride in knowing all sorts of neat syntax to add to your patterns. My current favorite is the negative lookbehind, because like I said, I really am that big a nerd. Even with my longstanding love […]",[769],{"name":226,"created_at":345,"published_at":346,"updated_at":347,"id":348,"uuid":224,"content":770,"slug":353,"full_slug":225,"sort_by_date":194,"position":354,"tag_list":771,"is_startpage":59,"parent_id":356,"meta_data":194,"group_id":357,"first_published_at":358,"release_id":194,"lang":200,"path":194,"alternates":772,"default_full_slug":194,"translated_slugs":194,"_stopResolving":162},{"_uid":350,"name":226,"component":351,"description":352},[],[],"passive-groups-in-regular-expressions","blog\u002Fposts\u002Fpassive-groups-in-regular-expressions",1380,[],"ae509966-f25f-4661-9996-e1c87d01767b","2008-03-07T03:40:00.000Z",[],{"name":781,"created_at":782,"published_at":346,"updated_at":783,"id":784,"uuid":785,"content":786,"slug":905,"full_slug":906,"sort_by_date":194,"position":907,"tag_list":908,"is_startpage":59,"parent_id":431,"meta_data":194,"group_id":909,"first_published_at":910,"release_id":194,"lang":200,"path":194,"alternates":911,"default_full_slug":194,"translated_slugs":194},"When a select element isn’t a select element","2023-03-24T17:13:10.915Z","2023-03-24T17:20:23.562Z",64568,"c4781077-c7a9-45f0-bc15-15bc0237289a",{"_uid":787,"title":781,"content":788,"summary":894,"component":331,"categories":900},"e8a143e5-3c0e-4d01-bbd3-bcdaab6519b0",{"type":372,"content":789},[790,795,805,809,819,823,832,836,883],{"type":450,"attrs":791,"content":792},{"level":452},[793],{"text":794,"type":379},"When a select element isn’t a select element (javascript)",{"type":375,"content":796},[797,799,803],{"text":798,"type":379},"So let’s say you’re doing some quick javascript to validate input fields before form submission. You might gather all the elements you want to verify into an array, then loop through and apply some different logic to each element depending on the type (text input, textarea, checkbox, radio, etc.). We did this a while ago for ",{"text":800,"type":379,"marks":801},".fc_required",[802],{"type":698},{"text":804,"type":379}," custom fields on checkout, but we forgot to include select elements. Our code looked like this (line breaks added for legibility):",{"type":375,"content":806},[807],{"text":808,"type":379},"if ( ( this.type == “text” || this.type == “textarea” ) && this.value == “”) {…}",{"type":375,"content":810},[811,813,817],{"text":812,"type":379},"That looks like it should. So, to add select box validation, you’d just add a check for ",{"text":814,"type":379,"marks":815},"this.value == “select”",[816],{"type":698},{"text":818,"type":379},", right?",{"type":375,"content":820},[821],{"text":822,"type":379},"if ( ( this.type == “text” || this.type == “textarea” || this.type == “select” ) && this.value == “”) {…}",{"type":375,"content":824},[825,830],{"text":826,"type":379,"marks":827},"Wrong.",[828],{"type":829},"bold",{"text":831,"type":379}," Turns out, you need this:",{"type":375,"content":833},[834],{"text":835,"type":379},"if ( ( this.type == “text” || this.type == “textarea” || this.type == “select-one” ) && this.value == “”) {…}",{"type":375,"content":837},[838,840,844,846,850,852,856,858,864,866,870,872,875,877,881],{"text":839,"type":379},"So if you already knew that, good on ya. The types of a ",{"text":841,"type":379,"marks":842},"select",[843],{"type":698},{"text":845,"type":379}," element are ",{"text":847,"type":379,"marks":848},"select-one",[849],{"type":698},{"text":851,"type":379}," and ",{"text":853,"type":379,"marks":854},"select-multiple",[855],{"type":698},{"text":857,"type":379}," (for select boxes that can accept multiple selections at once). A bit more info is at ",{"text":859,"type":379,"marks":860},"JavascriptKit",[861],{"type":388,"attrs":862},{"href":863,"title":194},"http:\u002F\u002Fwww.javascriptkit.com\u002Fjsref\u002Fselect.shtml",{"text":865,"type":379}," and DevGuru, but there’s not much more there than knowing that the ",{"text":867,"type":379,"marks":868},"type",[869],{"type":698},{"text":871,"type":379}," for a ",{"text":841,"type":379,"marks":873},[874],{"type":698},{"text":876,"type":379}," element is ",{"text":878,"type":379,"marks":879},"not",[880],{"type":761},{"text":882,"type":379}," “select”.",{"type":375,"content":884},[885,887,893],{"text":886,"type":379},"So now you know, and ",{"text":888,"type":379,"marks":889},"knowing is half the battle",[890],{"type":388,"attrs":891},{"href":892,"title":194},"http:\u002F\u002Fwww.ebaumsworld.com\u002Ftags\u002Fgijoe\u002F",{"text":477,"type":379},{"type":372,"content":895},[896],{"type":375,"content":897},[898],{"text":899,"type":379},"When a select element isn’t a select element (javascript) So let’s say you’re doing some quick javascript to validate input fields before form submission. You might gather all the elements you want to verify into an array, then loop through and apply some different logic to each element depending on the type (text input, […]",[901],{"name":226,"created_at":345,"published_at":346,"updated_at":347,"id":348,"uuid":224,"content":902,"slug":353,"full_slug":225,"sort_by_date":194,"position":354,"tag_list":903,"is_startpage":59,"parent_id":356,"meta_data":194,"group_id":357,"first_published_at":358,"release_id":194,"lang":200,"path":194,"alternates":904,"default_full_slug":194,"translated_slugs":194,"_stopResolving":162},{"_uid":350,"name":226,"component":351,"description":352},[],[],"when-a-select-element-isnt-a-select-element","blog\u002Fposts\u002Fwhen-a-select-element-isnt-a-select-element",2090,[],"2ca3ff8c-f29b-4b4e-9a68-204556adfa2f","2008-03-04T05:35:00.000Z",[],1790901688,[914,918],{"name":239,"created_at":417,"published_at":346,"updated_at":418,"id":419,"uuid":237,"content":915,"slug":423,"full_slug":238,"sort_by_date":194,"position":195,"tag_list":916,"is_startpage":59,"parent_id":356,"meta_data":194,"group_id":425,"first_published_at":358,"release_id":194,"lang":200,"path":194,"alternates":917,"default_full_slug":194,"translated_slugs":194},{"_uid":421,"name":239,"component":351,"description":422},[],[],{"name":226,"created_at":345,"published_at":346,"updated_at":347,"id":348,"uuid":224,"content":919,"slug":353,"full_slug":225,"sort_by_date":194,"position":354,"tag_list":920,"is_startpage":59,"parent_id":356,"meta_data":194,"group_id":357,"first_published_at":358,"release_id":194,"lang":200,"path":194,"alternates":921,"default_full_slug":194,"translated_slugs":194},{"_uid":350,"name":226,"component":351,"description":352},[],[],[],{"cache-control":924,"connection":925,"content-encoding":926,"content-type":927,"date":928,"etag":929,"per-page":930,"referrer-policy":931,"sb-be-version":932,"server":933,"strict-transport-security":934,"total":935,"transfer-encoding":936,"vary":937,"via":938,"x-amz-cf-id":939,"x-amz-cf-pop":940,"x-cache":941,"x-content-type-options":942,"x-frame-options":943,"x-permitted-cross-domain-policies":944,"x-request-id":945,"x-runtime":946,"x-xss-protection":947},"max-age=0, public, s-maxage=604800, stale-if-error=3600","keep-alive","gzip","application\u002Fjson; charset=utf-8","Fri, 02 Oct 2026 00:52:00 GMT","W\u002F\"cb451d872db5285ce9f8157592c26d9e\"","9","strict-origin-when-cross-origin","5.976.0","nginx\u002F1.29.1","max-age=31536000","40","chunked","Origin,Accept-Encoding, Origin","1.1 1853c7defe9f25dc2bd8d26d4ff7c8ae.cloudfront.net (CloudFront)","KG6iQHi_dMBi3YgAfVVA6L-8qVa9y04d-MAOBz167MJlKW8R-wI2ZA==","ATL59-P15","Miss from cloudfront","nosniff","SAMEORIGIN","none","da151ed8-de31-427b-bacf-32b4fb2a2ace","0.043795","0",9,40,{},1790902319595]