{"id":13512531,"url":"https://github.com/geongeorge/i-hate-regex","last_synced_at":"2025-05-16T09:06:18.678Z","repository":{"id":39535796,"uuid":"200323221","full_name":"geongeorge/i-hate-regex","owner":"geongeorge","description":"The code for iHateregex.io 😈 - The Regex Cheat Sheet","archived":false,"fork":false,"pushed_at":"2023-12-27T10:58:07.000Z","size":7823,"stargazers_count":4516,"open_issues_count":40,"forks_count":320,"subscribers_count":48,"default_branch":"master","last_synced_at":"2025-05-08T17:48:54.115Z","etag":null,"topics":["nuxt","regex","tailwindcss","vue"],"latest_commit_sha":null,"homepage":"https://iHateRegex.io","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/geongeorge.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"open_collective":"ihateregex"}},"created_at":"2019-08-03T02:42:32.000Z","updated_at":"2025-05-01T09:30:10.000Z","dependencies_parsed_at":"2024-01-09T14:22:41.812Z","dependency_job_id":null,"html_url":"https://github.com/geongeorge/i-hate-regex","commit_stats":{"total_commits":406,"total_committers":20,"mean_commits":20.3,"dds":0.2660098522167488,"last_synced_commit":"a8e8aec729390ae14ff7d6a774e4b4899bf56821"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geongeorge%2Fi-hate-regex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geongeorge%2Fi-hate-regex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geongeorge%2Fi-hate-regex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/geongeorge%2Fi-hate-regex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/geongeorge","download_url":"https://codeload.github.com/geongeorge/i-hate-regex/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254071003,"owners_count":22009729,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nuxt","regex","tailwindcss","vue"],"created_at":"2024-08-01T03:01:59.598Z","updated_at":"2025-05-16T09:06:13.670Z","avatar_url":"https://github.com/geongeorge.png","language":"Vue","funding_links":["https://opencollective.com/ihateregex"],"categories":["Vue","实战项目","Programming Language Tutorials","vue","tailwindcss"],"sub_categories":["Vue实战项目","For Scala"],"readme":"\u003cdiv align=\"center\"\u003e\n  \n  \u003ch1\u003e\n    iHateRegex 😈\n  \u003c/h1\u003e\n  \n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/geongeorge/i-hate-regex/pull/new\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/PRs%20-welcome-brightgreen.svg\" alt=\"PRs Welcome\" /\u003e\n    \u003c/a\u003e\n      \u003cimg src=\"https://github.com/geongeorge/i-hate-regex/workflows/Node.js%20CI/badge.svg\" alt=\"Nodejs CI\" /\u003e\n    \u003ca title=\"Chat on Telegram\" href=\"https://t.me/ihateregex\"\u003e \u003cimg src=\"https://img.shields.io/badge/chat-Telegram-blueviolet?logo=Telegram\"/\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp\u003e\n\u003ca href=\"https://opencollective.com/ihateregex\" target=\"_blank\"\u003e\n\u003cimg src=\"https://opencollective.com/webpack/donate/button@2x.png?color=blue\" width=180\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n  \u003ca href=\"https://ihateregex.io\"\u003e\u003cimg src=\"https://i.imgur.com/mHuTAzy.png\" width=600\u003e\u003c/a\u003e\n  \n  \u003cp\u003e\n    \u003cstrong\u003edon't just use; understand.\u003c/strong\u003e\n\u003c/p\u003e\n\n  \u003cp\u003e\n    \u003cstrong\u003e\u003ca href=\"https://ihateregex.io\"\u003eiHateRegex.io\u003c/a\u003e\u003c/strong\u003e - a regex cheatsheet for the haters.\n  \u003c/p\u003e\n\n  \u003cp\u003e\n   Chat with us on \u003ca href=\"https://t.me/ihateregex\" target=\"_blank\"\u003eTelegram\u003c/a\u003e\n\n\u003c/p\u003e\n\u003c/div\u003e\n\n\n\n## Features 😎\n\n- [x] Visual representation of regular expressions\n- [x] Matched strings - the Testing area\n- [x] Embed regular expression visualization on your sites\n- [x] Regex code highlighting and validation\n- [x] Regex description with markdown support\n- [ ] [Playground page](https://ihateregex.io/playground) where you can create your own expression and link to it.\n- [ ] User login and save regex\n\n## Setup 🚀\n\n1. Install [yarn](https://yarnpkg.com/)\n\n2. [Clone](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) this repo\n\n3. Install dependencies ⚙️\n\n  ``` bash\n  $ yarn install\n\n  ```\n4. Test on localhost 🛠\n  ``` bash\n  # serve with hot reload at localhost:3600\n  $ yarn dev\n  ```\n5. Build and Start nuxt server 🚀\n  ``` bash\n  # build for production and launch server\n  $ yarn build\n  $ yarn start\n  ```\n\nThis project is built with Nuxt.js 🙌\n\nFor detailed explanation on how things work, check out [Nuxt.js docs](https://nuxtjs.org).\n\n\n## Contribute Regex 🙏\n\nContribute to this project and make this the largest collection of useful expressions 😍\n\nYou can also submit regex via this [google form](https://forms.gle/Cwo3VupujQJzeoYQ9)\n\n### To contribute:\n\n1. Add your regex to `/static/regex/data.json`\n\n\u003cdetails\u003e\n\u003csummary\u003eShow sample JSON\u003c/summary\u003e\n\n```json\n{\n        \"id\": \"username\",\n        \"title\": \"username\",\n        \"tagline\": \"match a username\",\n        \"description\": \"Alphanumeric string that may include _ and - having a length of 3 to 16 characters.\",\n        \"regex\": \"^[a-z0-9_-]{3,15}$\",\n        \"flag\": \"gm\",\n        \"matchText\": [\n            \"lorem\",\n            \"ipsum\",\n            \"gr3at\",\n            \"a\",\n            \"ab\",\n            \"abcd\",\n            \"abcde\",\n            \"john doe\",\n            \"johnny\",\n            \"abcdefghijklmnopqrst\"\n        ],\n        \"cheatRegex\": [\n            \"/^/\",\n            \"/$/\",\n            \"/[a-zA-Z0-9]/\",\n            \"/(hello){1,3}/\"\n        ],\n        \"embedHeight\": 300,\n        \"tags\" : [\"name\", \"slug\"]\n    },\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eShow JSON properties\u003c/summary\u003e\n\n| Property | Definition |\n|------|------------|\n|  id|  this is the slug and also the short name of the regex. cannot contain spaces and only contain url-safe characters|\n|  title |  Title of the page. |\n| tagline  |  Tagline |\n| description  | First line under the tagline and also the meta description |\n|  regex |  The actual regex string |\n| flag  |  regex flags associated with the expression. eg; g |\n| matchText  | Array(line by line) of strings to be included in the string matching are  |\n|  cheatRegex | refer `static/regex/cheatsheet.json` and see what all cheats are relevent to this expression. (you can also add your own cheats into cheatsheet.json and refer to that) |\n|  embedHeight | Height in pixels of the regex visualization embed  |\n| tags  | tags related to the expression (to be used later)  |\n\n\u003c/details\u003e\n\n2. Create a markdown file in `/static/regex/markdown/` named `\u003cregex-id\u003e.md` for longer description and explanation\n\n    *\u0026lt;regex-id\u0026gt; is the **id** from **data.json***\n\n\nThat's it 🙌 Go ahead and shoot a new pull request✨✨\n\n### Descriptions\n\nThere are 2 descriptions for each regex. \n\n- One is the **description** property inside `/static/regex/data.json`. \n\n    - This is used for page **meta description** as well.\n    - This is the **first description**\n\n- Second is a dedicated **markdown file** in `/static/regex/markdown/\u003cfile\u003e.md`\n\n  - This should explain how the expression works in detail.\n  - This is the **long description**\n\n  \u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/fRiJeql.png\" width=\"600\"\u003e\n  \u003c/div\u003e\n\n\n| Property | Definition | example |\n|------|------------|------------|\n| **description** property inside `data.json` | This should explain about what the target match is in a few lines. It should not contain any html or markdown |A username is a unique identifier given to accounts in websites and social media |\n|dedicated **markdown file**|Explain about the expression and how it works| ip addresses are of the range 0.0.0.0 - 255.255.255.255. The expression matches the ....(more)|\n\n## Sponsors 💖\n\n\u003ca href=\"http://bit.ly/datree-ihr-gh\" target=\"_blank\"\u003e\n\u003cimg width=\"190\" src=\"https://assets.website-files.com/5d514f718e8309c01d798013/5d8b4657e7740e300666e3cc_datree_LOGO%20FLAT%20h-p-500.png\"\u003e\n\u003c/a\u003e\n\n\u003cp\u003e\n\u003ca href=\"https://opencollective.com/ihateregex\"\u003eDonate via Opencollective\u003c/a\u003e\n\u003c/p\u003e\n\n\n## Credits\n\n- The visual demo is built with: [regexper](https://gitlab.com/javallone/regexper-static\n)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeongeorge%2Fi-hate-regex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeongeorge%2Fi-hate-regex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeongeorge%2Fi-hate-regex/lists"}