# Permissive WWW Autolinks With the flag `MD_FLAG_PERMISSIVEWWWAUTOLINKS`, MD4C enables recognition of autolinks starting with `www.`, even if they do not exactly follow the syntax of autolink as specified in CommonMark specification. These do not have to be enclosed in `<` and `>`, and they even do not need any preceding scheme specification. The WWW autolink will be recognized when the text `www.` is found followed by a valid domain. A valid domain consists of segments of alphanumeric characters, underscores (`_`) and hyphens (`-`) separated by 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 . <p><a href="http://www.commonmark.org">www.commonmark.org</a></p> ```````````````````````````````` After a valid domain, zero or more non-space non-`<` characters may follow: ```````````````````````````````` example Visit www.commonmark.org/help for more information. . <p>Visit <a href="http://www.commonmark.org/help">www.commonmark.org/help</a> for more information.</p> ```````````````````````````````` 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. . <p>Visit <a href="http://www.commonmark.org">www.commonmark.org</a>.</p> <p>Visit <a href="http://www.commonmark.org/a.b">www.commonmark.org/a.b</a>.</p> ```````````````````````````````` 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)) . <p><a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a></p> <p>(<a href="http://www.google.com/search?q=Markup+(business)">www.google.com/search?q=Markup+(business)</a>)</p> ```````````````````````````````` 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 . <p><a href="http://www.google.com/search?q=(business))+ok">www.google.com/search?q=(business))+ok</a></p> ```````````````````````````````` 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; . <p><a href="http://www.google.com/search?q=commonmark&hl=en">www.google.com/search?q=commonmark&hl=en</a></p> <p><a href="http://www.google.com/search?q=commonmark">www.google.com/search?q=commonmark</a>&hl;</p> ```````````````````````````````` `<` immediately ends an autolink. ```````````````````````````````` example www.commonmark.org/he<lp . <p><a href="http://www.commonmark.org/he">www.commonmark.org/he</a><lp</p> ```````````````````````````````` ## GitHub Issues ### [Issue 53](https://github.com/mity/md4c/issues/53) ```````````````````````````````` example This is [link](www.github.com/). . <p>This is <a href="www.github.com/">link</a>.</p> ```````````````````````````````` ```````````````````````````````` example This is [link](www.github.com/)X . <p>This is <a href="www.github.com/">link</a>X</p> ````````````````````````````````