Resources

Repeat

\w{2}
\w{4}
\w{2,4}

Insert

Note use of $1 to keep the original text. Brackets seem to be needed for this to work.

Applied VS Code regex replace.

Add character

Add header symbol before a number.

  • Find: \d
  • Replace with: # $1

Add break tag

Insert br tag at the end of lines which are not headings or empty lines.

  • Find: (^[^#].+)
  • Replace with: $1<br>

Modifiers

https://www.w3schools.com/jsref/jsref_regexp_m.asp

Exclude

Exclude characters

Use ^ inside [] to exclude. Note a-z will work and a - must be at the start of the end to match a literal -.

[^\w-]

Exclude words

Source: regextester

^((?!badword).)*$
badword
test      # match
one two   # match
abadwords
three     # match

Multiple exclusions:

?!(foo|bar)

?!(http|[{#])

URLs

URL validation

Detailed

Source: regexr.com/39nr7

This will match multiple URLs on a line.

[(http(s)?):\/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)

Simplified

I made this and tested in VS Code.

https:\/\/[\w./#-]*

It does not match ?= or trailing / or Jekyll {{ URLs.

Add ` ` or \s or \( at the start to find URL in a certain context.

Security

Insecure URLs excluding localhost. Make secure. Using VS Code find and replace.

  • Find:
      http:\/\/(?!localhost)[\w./#-]*
    
  • Replace:
      $1s$2
    

Markdown URLs

  • Internal and external paths. Allows for empty target too - ().
      \[.+\]\(.*\)
    
  • Internal path
      \[.+\]\((?!http).+\)
    
  • Internal absolute path
      \[.+\]\(/.+\)
    
  • External URLs
      \[.+\]\(http.+\)
    
  • HTTP URL that is not secure
      \[.+\]\(http[^s].+\)
    
  • Internal path which is not a # ID reference or Jekyll link.
      \[.+\]\((?!(http|[{#])).+\)
    

Note www without a protocol is also external but not considered here as I don’t use that style.

Convert to markdown URL

Find an external URL and convert to []() format, remove protocol and www in the label - using regex find and replace in VS Code.

Includes an optional trailing slash (if not matched, this gets left outside the pattern after the () part).

  • Find:
       (https:\/\/)(www\.)?([\w./-]+[\w-]+)(/?)
    
  • Replace:
       [$3]($1$2$3$4)
    

Note leading space. This could be remove for lines starting with URL.

Sample:

  • https://stackedit.io/ => ` stackedit.io`
  • https://github.com/MichaelCurrin/nested-jekyll-menus => ` [github.com/MichaelCurrin/nested-jekyll-menu](https://github.com/MichaelCurrin/nested-jekyll-menus`
  • https://github.com/MichaelCurrin/nested-jekyll-menus/ => ` [github.com/MichaelCurrin/nested-jekyll-menu](https://github.com/MichaelCurrin/nested-jekyll-menus/`

This variation handles # ID values.

  • Find:
       (https:\/\/)(www\.)?([\w./-]+[\w-]+)(#[\w-]*)?(/?)
    
  • Replace:
       [$3]($1$2$3$4$5)