## Autolinks (extension) GFM enables the `autolink` extension, where autolinks will be recognised in a greater number of conditions. [Autolink]s can also be constructed without requiring the use of `<` and to `>` to delimit them, although they will be recognized under a smaller set of circumstances. All such recognized autolinks can only come at the beginning of a line, after whitespace, or any of the delimiting characters `*`, `_`, `~`, and `(`. An [extended www autolink](@) will be recognized when the text `www.` is found followed by a [valid domain]. A [valid domain](@) consists of alphanumeric characters, underscores (`_`), hyphens (`-`) and periods (`.`). There must be at least one period, and no underscores may be present in the last two segments of the domain. The scheme `http` will be inserted automatically: ```````````````````````````````` example www.commonmark.org .

www.commonmark.org

```````````````````````````````` After a [valid domain], zero or more non-space non-`<` characters may follow: ```````````````````````````````` example Visit www.commonmark.org/help for more information. .

Visit www.commonmark.org/help for more information.

```````````````````````````````` We then apply [extended autolink path validation](@) as follows: Trailing punctuation (specifically, `?`, `!`, `.`, `,`, `:`, `*`, `_`, and `~`) will not be considered part of the autolink, though they may be included in the interior of the link: ```````````````````````````````` example Visit www.commonmark.org. Visit www.commonmark.org/a.b. Visit www.commonmark.org/~jm/foo/bar.pdf. .

Visit www.commonmark.org.

Visit www.commonmark.org/a.b.

Visit www.commonmark.org/~jm/foo/bar.pdf.

```````````````````````````````` When an autolink ends in `)`, we scan the entire autolink for the total number of parentheses. If there is a greater number of closing parentheses than opening ones, we don't consider the last character part of the autolink, in order to facilitate including an autolink inside a parenthesis: ```````````````````````````````` example www.google.com/search?q=Markup+(business) (www.google.com/search?q=Markup+(business)) .

www.google.com/search?q=Markup+(business)

(www.google.com/search?q=Markup+(business))

```````````````````````````````` This check is only done when the link ends in a closing parentheses `)`, so if the only parentheses are in the interior of the autolink, no special rules are applied: ```````````````````````````````` example www.google.com/search?q=(business))+ok .

www.google.com/search?q=(business))+ok

```````````````````````````````` If an autolink ends in a semicolon (`;`), we check to see if it appears to resemble an [entity reference][entity references]; if the preceding text is `&` followed by one or more alphanumeric characters. If so, it is excluded from the autolink: ```````````````````````````````` example www.google.com/search?q=commonmark&hl=en www.google.com/search?q=commonmark&hl; .

www.google.com/search?q=commonmark&hl=en

www.google.com/search?q=commonmark&hl;

```````````````````````````````` `<` immediately ends an autolink. ```````````````````````````````` example www.commonmark.org/hewww.commonmark.org/he<lp

```````````````````````````````` An [extended url autolink](@) will be recognised when one of the schemes `http://`, `https://`, or `ftp://`, followed by a [valid domain], then zero or more non-space non-`<` characters according to [extended autolink path validation]: ```````````````````````````````` example http://commonmark.org (Visit https://encrypted.google.com/search?q=Markup+(business)) Anonymous FTP is available at ftp://foo.bar.baz. .

http://commonmark.org

(Visit https://encrypted.google.com/search?q=Markup+(business))

Anonymous FTP is available at ftp://foo.bar.baz.

```````````````````````````````` An [extended email autolink](@) will be recognised when an email address is recognised within any text node. Email addresses are recognised according to the following rules: * One ore more characters which are alphanumeric, or `.`, `-`, `_`, or `+`. * An `@` symbol. * One or more characters which are alphanumeric, or `.`, `-`, or `_`. At least one of the characters here must be a period (`.`). The last character must not be one of `-` or `_`. If the last character is a period (`.`), it will be excluded from the autolink. The scheme `mailto:` will automatically be added to the generated link: ```````````````````````````````` example foo@bar.baz .

foo@bar.baz

```````````````````````````````` `+` can occur before the `@`, but not after. ```````````````````````````````` example hello@mail+xyz.example isn't valid, but hello+xyz@mail.example is. .

hello@mail+xyz.example isn't valid, but hello+xyz@mail.example is.

```````````````````````````````` `.`, `-`, and `_` can occur on both sides of the `@`, but only `.` may occur at the end of the email address, in which case it will not be considered part of the address: ```````````````````````````````` example a.b-c_d@a.b a.b-c_d@a.b. a.b-c_d@a.b- a.b-c_d@a.b_ .

a.b-c_d@a.b

a.b-c_d@a.b.

a.b-c_d@a.b-

a.b-c_d@a.b_

```````````````````````````````` The autolinks extension should not interfere with regular links (#65). ```````````````````````````````` example [a link](http://www.google.com/)stuff? .

a linkstuff?

````````````````````````````````