github.com Open in urlscan Pro
140.82.121.4  Public Scan

Submitted URL: https://regex.cool/
Effective URL: https://github.com/slevithan/awesome-regex
Submission: On June 10 via api from US — Scanned from DE

Form analysis 3 forms found in the DOM

GET

<form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get">
  <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder" data-min-width="300" data-catalyst="">
    <div class="FormControl FormControl--fullWidth">
      <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label>
      <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput">
        <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap">
          <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual">
            <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path>
          </svg>
        </span>
        <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer">
          <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent"></div>
          <div class="QueryBuilder-InputWrapper">
            <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"><span></span></div>
            <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-e6095cd8-a9a6-4f79-a0b9-839439e65323"
              data-target="query-builder.input" data-action="
          input:query-builder#inputChange
          blur:query-builder#inputBlur
          keydown:query-builder#inputKeydown
          focus:query-builder#inputFocus
        " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" aria-controls="query-builder-test-results" aria-autocomplete="list" aria-haspopup="listbox">
          </div>
        </div>
        <span class="sr-only" id="query-builder-test-clear">Clear</span>
        <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action="
                click:query-builder#clear
                focus:query-builder#clearButtonFocus
                blur:query-builder#clearButtonBlur
              " variant="small" hidden="" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16"
            viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual">
            <path
              d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z">
            </path>
          </svg>
        </button>
      </div>
      <template id="search-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search">
          <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path>
        </svg>
      </template>
      <template id="code-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code">
          <path
            d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z">
          </path>
        </svg>
      </template>
      <template id="file-code-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code">
          <path
            d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z">
          </path>
        </svg>
      </template>
      <template id="history-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history">
          <path
            d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z">
          </path>
        </svg>
      </template>
      <template id="repo-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo">
          <path
            d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z">
          </path>
        </svg>
      </template>
      <template id="bookmark-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark">
          <path
            d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z">
          </path>
        </svg>
      </template>
      <template id="plus-circle-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle">
          <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path>
        </svg>
      </template>
      <template id="circle-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill">
          <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path>
        </svg>
      </template>
      <template id="trash-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash">
          <path
            d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z">
          </path>
        </svg>
      </template>
      <template id="team-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people">
          <path
            d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z">
          </path>
        </svg>
      </template>
      <template id="project-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project">
          <path
            d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z">
          </path>
        </svg>
      </template>
      <template id="pencil-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil">
          <path
            d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z">
          </path>
        </svg>
      </template>
      <template id="copilot-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot">
          <path
            d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z">
          </path>
          <path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path>
        </svg>
      </template>
      <template id="workflow-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow">
          <path
            d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z">
          </path>
        </svg>
      </template>
      <template id="book-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book">
          <path
            d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z">
          </path>
        </svg>
      </template>
      <template id="code-review-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review">
          <path
            d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z">
          </path>
        </svg>
      </template>
      <template id="codespaces-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces">
          <path
            d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z">
          </path>
          <path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path>
        </svg>
      </template>
      <template id="comment-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment">
          <path
            d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z">
          </path>
        </svg>
      </template>
      <template id="comment-discussion-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion">
          <path
            d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z">
          </path>
        </svg>
      </template>
      <template id="organization-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization">
          <path
            d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z">
          </path>
        </svg>
      </template>
      <template id="rocket-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket">
          <path
            d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z">
          </path>
        </svg>
      </template>
      <template id="shield-check-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check">
          <path
            d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z">
          </path>
        </svg>
      </template>
      <template id="heart-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart">
          <path
            d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z">
          </path>
        </svg>
      </template>
      <template id="server-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server">
          <path
            d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z">
          </path>
        </svg>
      </template>
      <template id="globe-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe">
          <path
            d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z">
          </path>
        </svg>
      </template>
      <template id="issue-opened-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened">
          <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path>
          <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path>
        </svg>
      </template>
      <template id="device-mobile-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile">
          <path
            d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z">
          </path>
        </svg>
      </template>
      <template id="package-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package">
          <path
            d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z">
          </path>
        </svg>
      </template>
      <template id="credit-card-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card">
          <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path>
          <path
            d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z">
          </path>
        </svg>
      </template>
      <template id="play-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play">
          <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path>
        </svg>
      </template>
      <template id="gift-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift">
          <path
            d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z">
          </path>
        </svg>
      </template>
      <template id="code-square-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square">
          <path
            d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z">
          </path>
        </svg>
      </template>
      <template id="device-desktop-icon">
        <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop">
          <path
            d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z">
          </path>
        </svg>
      </template>
      <div class="position-relative">
        <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action="
                    combobox-commit:query-builder#comboboxCommit
                    mousedown:query-builder#resultsMousedown
                  " data-target="query-builder.resultsList" data-persist-list="false" id="query-builder-test-results"></ul>
      </div>
      <div class="FormControl-inlineValidation" id="validation-e6095cd8-a9a6-4f79-a0b9-839439e65323" hidden="hidden">
        <span class="FormControl-inlineValidation--visual">
          <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill">
            <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path>
          </svg>
        </span>
        <span></span>
      </div>
    </div>
    <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div>
  </query-builder>
</form>

POST /search/feedback

<form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token"
    value="CIX34hfrPIq3nQwLlCDhLWca8Fc/IPhx54gzhxz00paTap4P8CwVbL1bJm0f6WwvlE9Wf8/6uF4Z+TP8reEhkg==">
  <p>We read every piece of feedback, and take your input very seriously.</p>
  <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea>
  <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox">
  <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label>
</form>

POST /search/custom_scopes

<form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token"
    value="JkpWFS0F06ZpD7bOwRJJzUuD30AGjtLex5j5J2CqXGtA41d/b+kMFl6tFaW83UYNrx4Mmh9J17gm+jswz3062Q==">
  <div data-target="custom-scopes.customScopesModalDialogFlash"></div>
  <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField">
  <div class="form-group">
    <label for="custom_scope_name">Name</label>
    <auto-check src="/search/custom_scopes/check_name" required="">
      <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required="" maxlength="50" spellcheck="false">
      <input type="hidden" data-csrf="true" value="p2vlybNkJkxNvjlzV62vtVBgT54kjINzrfs3/WPB2qgalpx5L7i5X6vrrDvHuDl6O7j9OYPoSONTYx/qTJjD1A==">
    </auto-check>
  </div>
  <div class="form-group">
    <label for="custom_scope_query">Query</label>
    <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required=""
      maxlength="500">
  </div>
  <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p>
</form>

Text Content

Skip to content



NAVIGATION MENU

Toggle navigation
Sign in

 * Product
    * Actions
      Automate any workflow
    * Packages
      Host and manage packages
    * Security
      Find and fix vulnerabilities
    * Codespaces
      Instant dev environments
    * GitHub Copilot
      Write better code with AI
    * Code review
      Manage code changes
    * Issues
      Plan and track work
    * Discussions
      Collaborate outside of code
   
   Explore
    * All features
    * Documentation
    * GitHub Skills
    * Blog

 * Solutions
   For
    * Enterprise
    * Teams
    * Startups
    * Education
   
   By Solution
    * CI/CD & Automation
    * DevOps
    * DevSecOps
   
   Resources
    * Learning Pathways
    * White papers, Ebooks, Webinars
    * Customer Stories
    * Partners

 * Open Source
    * GitHub Sponsors
      Fund open source developers
   
    * The ReadME Project
      GitHub community articles
   
   Repositories
    * Topics
    * Trending
    * Collections

 * Enterprise
    * Enterprise platform
      AI-powered developer platform
   
   Available add-ons
    * Advanced Security
      Enterprise-grade security features
    * GitHub Copilot
      Enterprise-grade AI features
    * Premium Support
      Enterprise-grade 24/7 support

 * Pricing


Search or jump to...



SEARCH CODE, REPOSITORIES, USERS, ISSUES, PULL REQUESTS...

Search

Clear



Search syntax tips




PROVIDE FEEDBACK



We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted
Cancel Submit feedback


SAVED SEARCHES


USE SAVED SEARCHES TO FILTER YOUR RESULTS MORE QUICKLY


Name
Query

To see all available qualifiers, see our documentation.


Cancel Create saved search
Sign in
Sign up
You signed in with another tab or window. Reload to refresh your session. You
signed out in another tab or window. Reload to refresh your session. You
switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert

{{ message }}
slevithan / awesome-regex Public
 * Notifications You must be signed in to change notification settings
 * Fork 1
 * Star 137
 * 

An opinionated list of regular expression tools, tutorials, libraries, etc.

regex.cool


LICENSE

View license
137 stars 1 fork Branches Tags Activity
Star
Notifications You must be signed in to change notification settings
 * Code
 * Issues 0
 * Pull requests 0
 * Actions
 * Security
 * Insights

Additional navigation options
 * Code
 * Issues
 * Pull requests
 * Actions
 * Security
 * Insights


SLEVITHAN/AWESOME-REGEX

This commit does not belong to any branch on this repository, and may belong to
a fork outside of the repository.
 main
1 Branch
0 Tags

Go to file



Code



FOLDERS AND FILES

NameName
Last commit message
Last commit date


LATEST COMMIT

slevithan
Add regex.rip ReDoS checker
Jun 8, 2024
af1a11d · Jun 8, 2024


HISTORY

130 Commits


.GITHUB/WORKFLOWS

.GITHUB/WORKFLOWS

Updates for awesome-lint 1.2
Jun 4, 2024
MEDIA

MEDIA

Add logo without text
May 20, 2024
.GITIGNORE

.GITIGNORE

First commit
May 3, 2024
CONTRIBUTING.MD

CONTRIBUTING.MD

Punctuation tweaks
May 6, 2024
LICENSE

LICENSE

First commit
May 3, 2024
README.MD

README.MD

Add regex.rip ReDoS checker
Jun 8, 2024
View all files


REPOSITORY FILES NAVIGATION

 * README
 * License

 Shortcut URL: regex.cool

Awesome Regex curates the best regular expression tools, tutorials, libraries,
and other resources. It covers all major regex flavors, and currently includes
especially deep coverage of regular expressions in JavaScript.

> Regular expressions (regex or regexp) are a powerful and concise way to
> search, parse, and process text. They're built into many programming
> languages, text editors, IDEs, database engines, word processors, and other
> tools.

Contributions are welcome. Add links through pull requests (guidelines) or
create an issue to start a discussion.

📖 Glossary


A brief glossary of regular expression terms as used in this list.

 * Regex engine: Software that parses and executes regular expressions, either
   built into a programming language or as a standalone library (synonym:
   implementation).
 * Regex flavor: A unique set of regex syntax and behavior. Basic syntax is
   typically shared across flavors, but more advanced features often vary,
   sometimes in subtle or incompatible ways. A flavor might be shared across
   multiple implementations or programming languages.
   * Ex: The “JavaScript” flavor is defined by the ECMAScript spec; implemented
     by multiple engines (V8, etc.).
   * Ex: The “PCRE” flavor is the PCRE2 library, used by numerous programming
     languages and tools.
   * Ex: Ruby swapped its regex implementation twice from version 1.8 ➜ 1.9 ➜
     2.0, so each used a distinct flavor. The Ruby 2.0+ flavor is referred to
     here as either “Ruby” or “Onigmo” (the underlying regex library).
 * Non-backtracking engine: Sometimes referred to elsewhere as a “DFA” engine.
   Non-backtracking engines like RE2 and Rust's regex run in linear time because
   they don't use backtracking. This rules out worst case performance from
   superlinear backtracking, but it's slower with some patterns and precludes
   some useful features like backreferences.


CONTENTS

 * Testers
 * Syntax-free regex builders
 * Visualizers
 * Grep-like tools
 * Tutorials
 * Regex engines
   * Documentation
   * Source code
   * Flavor differences
 * Performance
 * Collections of patterns
 * JavaScript regex libraries
 * JavaScript regex evolution
 * Books
 * Articles
 * Communities
 * Miscelaneous


TESTERS

For building, testing, and playing with regexes.

 * regex101 - Best free and best web-based tester.
   * Flavors: Java, JavaScript, .NET, PCRE, RE2, Rust, and emulates Python.
   * Includes regex debugger (PCRE only).
 * RegexBuddy (, $40) - Best tester.
   * Flavors: Emulates hundreds of flavors/versions, with deep knowledge of
     differences.
   * Includes regex debugger.
 * RegExr [GitHub] - Best open source tester.
   * Flavors: JavaScript, PCRE.
   * Languages: 🇺🇸, 🇨🇳 (fork).
 * RegexLearn [GitHub] - Best multilingual tester (JavaScript).
   * Languages: 🇺🇸, 🇹🇷, 🇷🇺, 🇪🇸, 🇨🇳, 🇩🇪, 🇺🇦, 🇫🇷, 🇵🇱, 🇰🇷,
     🇧🇷, 🇨🇿, 🇬🇪.
 * regexplained [GitHub] - Best tester for presentations (JavaScript).

✳️ Notable mentions


Flavors

 * JavaScript: RegViz.
 * .NET: Regex Storm [GitHub].
 * PCRE: PHP Live Regex.
 * Python: Pythex.
 * Ruby: Rubular.

Multiple flavors

 * CyrilEx [GitHub] - Java, JavaScript, MySQL, PHP, Python, Ruby.
 * Patterns (, $3) - Bash, Emacs, grep, Java, Oniguruma, PCRE, POSIX BRE, POSIX
   ERE, Ruby, sed.
 * RegexPlanet [GitHub] - Go, Haskell, Java, JavaScript, .NET, Perl, PHP,
   PostgreSQL, Python, Ruby, Tcl, XRegExp.


SYNTAX-FREE REGEX BUILDERS

Build regexes without writing regex syntax or code.

 * ChatGPT (and other LLMs) - Ex: "create a regex that matches X and explain it
   step by step".
 * RegexMagic (, $40) - Generate regexes using samples and rules.
   * Flavors: Emulates hundreds of flavors/versions.

✳️ Notable mentions

 * Regex Generator [GitHub] - Generate simple regexes from a sample text.
 * Regex.ai - Mark samples in a text and use AI to generate potential regexes.


VISUALIZERS

Visualize how your regular expressions are structured or operate.

 * Regex Vis [GitHub] - Create railroad diagrams, with visual editor. Flavor:
   JavaScript.
   * Languages: 🇺🇸, 🇨🇳.
 * Regulex [GitHub] - Create railroad diagrams. Flavor: JavaScript.
 * Nodexr [GitHub] - Graphical editor with visual hierarchy. Flavor: .NET.

✳️ Notable mentions

 * Regex Nodes [GitHub] - Graphical editor with visual hierarchy. Flavor:
   JavaScript.
 * Debuggex - Create railroad diagrams. Flavors: JavaScript, PCRE, Python.
 * RegExper [GitLab] - Create railroad diagrams. Flavor: JavaScript.


GREP-LIKE TOOLS

Search and replace through files.


COMMAND LINE

 * ripgrep - Better and faster grep. Recursively searches directories while
   respecting gitignore rules and skipping hidden/binary files.
   * Flavors: Rust (default), PCRE.

➕ See also: Feature comparison of grep-like tools.


GUI

 * Aba Search and Replace (, $30) - Displays matches as you type.
 * PowerGREP (, $159) - Can search through archives, binary files, PDFs,
   docs/sheets, emails, etc., via its GUI or the command line.
   * Flavors: Emulates hundreds of flavors/versions.
 * RegexRenamer () - Rename files using regexes.


TUTORIALS

Learn how to use regular expressions.


TRADITIONAL

 * Regular-Expressions.info - Covers numerous regex flavors.
 * The Modern JavaScript Tutorial: Regular expressions [GitHub] - Guide to using
   regexes in modern JavaScript.
   * Languages: 🇺🇸, 🇪🇸, 🇫🇷, 🇮🇹, 🇯🇵, 🇷🇺, 🇺🇦, 🇨🇳 (partial for
     others).

✳️ Notable mentions

 * RexEgg - Detailed tutorial with advanced topics.
 * learnbyexample [GitHub] - Ebooks on regexes (JavaScript, Python, Ruby) and
   command line text processing.
 * Regular Expressions for Regular Folk [GitHub] - Visual, example-based ebook
   for beginners.


WITH INTERACTIVE EXERCISES

 * RegexLearn [GitHub] - Interactive tutorial and practice problems.
   * Languages: 🇺🇸, 🇹🇷, 🇷🇺, 🇪🇸, 🇨🇳, 🇩🇪, 🇺🇦, 🇫🇷, 🇵🇱, 🇰🇷,
     🇧🇷, 🇨🇿, 🇬🇪.
 * RegexOne - Interactive tutorial and practice problems.


VIDEOS

 * Demystifying Regular Expressions - Great presentation for beginners, by Lea
   Verou at HolyJS 2017 (1hr 12m).
 * Learn Regular Expressions In 20 Minutes - Live syntax walkthrough in a regex
   tester, by Kyle Cook.
 * Many options for video courses are available on Udemy ($).


REGEX ENGINES

Major regex implementations, built into programming languages or as standalone
libraries.


DOCUMENTATION

Official regex references and guides.

REGEX FLAVORS

 * JavaScript (MDN): RegExp, Reference, Guide.
 * Boost.Regex: Manual.
 * C++: Regular expressions library.
 * Hyperscan: Introduction.
 * ICU: Regular Expressions.
 * Java: Pattern, API.
 * .NET: Overview, Language, API.
 * Onigmo: RE.
 * PCRE: pcre2pattern, API.
 * Perl: Syntax, Tutorial, Quick Start.
 * Python: re.
 * RE2: Syntax.
 * Rust: regex, regex_lite.

ℹ️ Raku (formerly Perl 6) reimagines regexes. See: Grammars (tutorial), Regexes
(best practices).

WITHOUT OWN FLAVOR

 * MySQL: Regular Expressions - Flavor: ICU.
 * PHP: Regular Expressions - Flavor: PCRE.
 * Ruby: Regexp - Flavor: Onigmo.
 * Swift: NSRegularExpression - Flavor: ICU.


SOURCE CODE

Read or contribute to the code behind major regex implementations.

 * V8: Irregexp - JavaScript RegExp engine used by Chrome, etc.
 * Boost.Regex - Popular C++ regex library.
 * Hyperscan - Intel's high-performance library, used for DPI.
 * ICU - Unicode org's package with full Unicode support.
 * Java: java.util.regex - JDK standard regexes.
 * .NET: System.Text.RegularExpressions - Shared by all .NET languages (C#, VB,
   etc.).
 * Onigmo - Forked and extended from Oniguruma. Default regex library of Ruby
   2.0+.
 * Oniguruma - Popular C regex library. Default regex library of Ruby 1.9.
 * PCRE2 - Popular C regex library used by PHP, R, etc.
 * Perl - See perlreguts.
 * Python: re and regex - Standard and extended regex libraries.
 * RE2 - Popular C++ regex library used by Go, etc. Non-backtracking engine.
 * Rust: regex - Non-backtracking engine.


FLAVOR DIFFERENCES

Syntax and behavior differences between regex flavors.

 * Ron Buckton: Regular Expression Feature Comparisons [GitHub].
 * Regular-Expressions.info: Tools & Languages.
 * Steven Levithan: Named capture, Lookbehind.
 * Wikipedia: Comparison of regular expression engines.


PERFORMANCE

Pattern and engine performance, benchmarks, and ReDoS prevention.


CRAFTING EFFICIENT REGEXES

 * Runaway Regular Expressions: Catastrophic Backtracking - Exploration and
   solutions for superlinear backtracking.
 * Book: High Performance JavaScript (2010) - Chapter 5: Strings and Regular
   Expressions.
 * Book: Mastering Regular Expressions, 3rd Edition (2006) - Chapter 6: Crafting
   an Efficient Expression.
 * Performance of Greedy vs. Lazy Regex Quantifiers - Illustrates the mechanics
   of backtracking.

ℹ️ With backtracking engines, how you craft a regex can affect how fast it finds
matches or reports failures.


REGEX ENGINE OPTIMIZATIONS

 * Regular Expression Matching Can Be Simple And Fast - On non-backtracking
   engines. A follow up includes comparisons of RE2 and PCRE performance.
 * Regular Expression Improvements in .NET 7 and .NET 5 - Includes detailed
   explanations of performance optimizations.
 * ripgrep is faster than {grep, …} - Includes details about what makes ripgrep
   and Rust's regex fast.


BENCHMARKING

 * Libraries for cross-engine benchmarking: rebar, regex-benchmark,
   sljit/regex_perf.html.
 * Boost.Regex: Performance - Compares Boost, C++ std::regex, and others.


REDOS CHECKERS

 * regex.rip - Test a regex for ReDoS vulnerability.
 * recheck [home] - JavaScript and Scala library for detecting ReDoS
   vulnerability. Can be used as an ESLint plugin.
 * vuln-regex-detector - Perl library for detecting ReDoS vulnerability.

⚠️ These tools aren't able to find vulnerabilities in all cases and have
limitations on supported syntax.


COLLECTIONS OF PATTERNS

Prewritten regexes for specific tasks.

 * Book: Regular Expressions Cookbook, 2nd Edition (2012) - High-quality
   solutions with detailed explanations.
   * Flavors: Java, JavaScript, .NET, PCRE, Perl, Python, Ruby, XRegExp.
 * Regex DB - Solutions include basic descriptions and examples of matching and
   non-matching text.

⚠️ Word of warning


Many regexes found online are low quality. It's risky to use regexes you don't
fully understand in code, since they might have false positives/negatives, be
vulnerable to performance problems with certain target strings, or assume a
different regex flavor.


JAVASCRIPT REGEX LIBRARIES

Open source JavaScript libraries for advanced regex use and processing.


ALTERNATIVE REGEX BUILDERS AND ENGINES

 * regex - A template tag with best practices built-in and advanced features.
 * XRegExp [home] - Extended regex syntax, flags, and utils; useful for
   backcompat.
 * incr-regex-package - Partial/incremental matching, used by react-rxinput for
   input validation with a regex mask.
 * node-re2 - Bindings for RE2, a non-backtracking engine.
 * rregex - Bindings for Rust's regex, a non-backtracking engine.


ABSTRACTED REGEX SYNTAX

 * Rexx - A template tag that uses structured syntax with variables and
   comments.
 * Melody [docs] - A language that compiles to regexes.
 * Compose with functions: compose-regexp.js, VerbalExpressions (implementations
   for many languages), magic-regexp [home], Super Expressive [playground].


REGEX PROCESSORS

 * AST builders: regexp-tree (includes optimizer, etc.), regexpp (used by
   ESLint), regjsparser/regjsgen.
   * AST Explorer: RegExp - View ASTs generated by regexp-tree, regexpp, and
     regjsparser.
   * regexp-ast-analysis [docs] - Analyze AST nodes produced by regexpp.
 * Highlight regex syntax: Regex Colorizer [home], CodeMirror PCRE mode.
 * Find regex mistakes and improvements: eslint-plugin-regexp [home],
   eslint-plugin-optimize-regex.
 * Generate strings that match a given regex: randexp.js, regex-to-strings.
 * Generate a regex from given strings: regexgen.


JAVASCRIPT REGEX EVOLUTION

A concise history of improvements to regular expressions in the JavaScript
standard, with links to the TC39 proposals where features were developed and
discussed.

 * ES3 (1999) introduced powerful regular expressions, though limited compared
   to other major flavors.
 * ES5 (2009) fixed unintuitive behavior by creating a new object every time
   regex literals are evaluated [explainer], and allowed regex literals to use
   unescaped forward slashes within character clases (/[/]/).
 * ES6/ES2015 added: [explainer]
   * Flag y (sticky), which anchors matches to lastIndex.
   * Flag u (unicode) [explainer] [2016 spec fix], which adds Unicode code point
     escapes via \u{…}, errors for unreserved letter escapes, Unicode
     case-folding for flag i, and surrogate pairs as code points (with impact on
     quantifiers, character classes, character class ranges, and built-in sets
     like . and \W).
   * Getter RegExp.prototype.flags.
   * Can subclass RegExp, plus
     RegExp.prototype[Symbol.match/replace/search/split] and
     RegExp[Symbol.species] for use in subclasses.
   * Use RegExp to copy a regex, optionally with new flags.
 * ES2018 added flag s (dotAll), lookbehind, named capture, and Unicode
   properties via \p{…} and \P{…} behind flag u (see list).
 * ES2020 added string method matchAll (which returns an iterator), plus
   RegExp.prototype[Symbol.matchAll].
 * ES2021 added replaceAll.
 * ES2022 added flag d (hasIndices), which provides start/end indices for
   matched substrings.
 * ES2024 added flag v (unicodeSets) [explainer] as an upgrade to flag u (can't
   be used together), which adds a set of multicharacter "properties of strings"
   to \p{…}, multicharacter elements within character classes via \p{…} and
   \q{…|…}, nested character classes, set operators […--…] and […&&…], improved
   case-insensitive matching, and different escaping rules within character
   classes.

> ES2019, ES2020, ES2021, ES2022, and ES2023 each added additional Unicode
> properties that can be used via \p{…} and \P{…} (see lists).

➕ See also

 * Backcompat libraries: regexpu, regenerate (Unicode property sets).
 * Chrome's l (linear) regex flag, behind a V8 flag [explainer] [how to run].
 * Can I use - Up-to-date browser support tables for individual features.

🔮 Future: Active proposals

 * Duplicate named capturing groups (2022) - Ex: (?<a>…)|(?<a>…).
 * Extended mode and comments (2021) - Flag x (extended) with insignificant
   whitespace and line comments (#…), plus inline comments via (?#…).
 * Pattern modifiers (2021) - Ex: (?ims:…), (?-ims:…), (?i-ms:…).
 * Atomic operators (2021) - Atomic groups via (?>…) and possessive quantifiers
   (ex: *+, ++).
 * Buffer boundaries (2021) - Anchors \A and \z, not affected by flag m.
 * \R escape (2021) - Outside character classes, \R matches any line terminator.
 * Restrict subclassing support in built-ins (2020) - Scaled back RegExp
   subclassing.
 * RegExp escaping (2015) - RegExp.escape.
 * Legacy RegExp features (2015) - Standardization of legacy features.


BOOKS

A curated list of regex books.

 * Regular Expressions Cookbook, 2nd Edition (2012) by Jan Goyvaerts and Steven
   Levithan - Regex tutorial with code samples for eight programming languages,
   100+ regex recipes for practical problems, and a deep focus on cross-flavor
   differences.
   * Flavors: Java, JavaScript, .NET, PCRE, Perl, Python, Ruby, XRegExp.
 * Mastering Regular Expressions, 3rd Edition (2006) by Jeffrey Friedl - A
   computer science classic, best for people who already know the basics.
   Includes good coverage of crafting efficient regexes.
   * Flavors: Dedicated chapters on Java, .NET, Perl, and PHP (PCRE), with more
     limited coverage of Python, Tcl, command line tools, etc.
 * Introducing Regular Expressions (2012) by Michael Fitzgerald - An intro for
   programmers new to regular expressions that sticks to the basics.


ARTICLES

A curated list of regex articles.

 * The World's Shortest Regex Compiler? and a follow up on optimization -
   Introduction to writing a non-backtracking regex engine (in JavaScript).
 * Regex Legends: The People Behind the Magic - Influential people behind the
   technology.
 * Fun With .NET Regex Balancing Groups - Advanced usage of a .NET-only regex
   feature.


COMMUNITIES

Discuss, assist, and get help with regular expressions.

 * Reddit: r/regex
 * Stack Overflow: [regex]


MISCELANEOUS

Other interesting, fun, and useful stuff.

 * Chrome extension: Regex - Regex search on webpages via Ctrl+Shift+F.
 * Quiz: regex101 Regex Quiz - Requires sign-in.
 * Games: Regex Crossword, Redoku.
 * Comics: xkcd, Garabato Kid.


ABOUT

An opinionated list of regular expression tools, tutorials, libraries, etc.

regex.cool


TOPICS

awesome regex regexp regular-expression awesome-list


RESOURCES

Readme


LICENSE

View license
Activity


STARS

137 stars


WATCHERS

5 watching


FORKS

1 fork
Report repository



FOOTER

© 2024 GitHub, Inc.


FOOTER NAVIGATION

 * Terms
 * Privacy
 * Security
 * Status
 * Docs
 * Contact
 * Manage cookies
 * Do not share my personal information

You can’t perform that action at this time.