# Domain names followed by full stops create invalid IDN domain names

A comment of mine contains the text See also: http://languagelearning.stackexchange.com‌​. However, this appears as See also: languagelearning.stackexchange.com‌​;. (where did that semi-colon come from?), and it links to http://languagelearning.stackexchange.xn--com-cn0a/, which doesn't exist.

• I can't imagine what funky software that'd be, @ShadowWizard. I'm running Firefox on Ubuntu with no weird settings. Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0 – TRiG Aug 15 '16 at 14:20
• From '12: From where does this semicolon come from?, though that was caused by the " – Floern Aug 15 '16 at 14:22
• I only noticed this now, so I can't recall. I think it was, copy URL from address bar, paste, hit backspace to remove trailing slash, type full stop, hit enter to submit comment. – TRiG Aug 15 '16 at 14:23
• whoa.. sorry for my assumptions. Turns out it wasn't you indeed. – Shadow Wizard Wearing Mask Aug 15 '16 at 14:28
• I'm going to have to read the suggested dupe more carefully. I was under the impression that it applied only to code. – TRiG Aug 15 '16 at 14:30
• This might be a change I pushed today. – Sklivvz Aug 15 '16 at 18:57
• If it is, then this doesn't seem to be a dupe of a '13 question. – BlueSoul Aug 16 '16 at 5:44
• @Sklivvz can you please remove the close votes? I'm afraid it's still in the Close review, and people might miss the fact it's not a dupe. Sorry for that! – Shadow Wizard Wearing Mask Aug 16 '16 at 17:50

This has been fixed and will be out in the next deployment.

TL;DR: Regex.

Long version: We introduce a non-visible, optional separator entity every 20 characters to make comments wrap. This has to be removed and taken into account when we linkify URLs. The Regex did not match the last ; as it's a valid separator for URLs: if you write http://example.com; the matched URL should be http://example.com. Unfortunately in some rare cases these separators would be introduced just at the right (wrong) spot. In the case linked, the URL with separators inserted ended with a separator and thus a semicolon like so

See also: http://languagelearn&zwnj;&#8203;ing.stackexchange.com&zwnj;&#8203;.


and so the URL parsed was

http://languagelearn&zwnj;&#8203;ing.stackexchange.com&zwnj;&#8203


without the trailing ;. Once we remove the separator this gives

http://languagelearning.stackexchange.com&zwnj;&#8203


which is what you found the link was pointing to. The semicolon that appears is also because of this.

I've improved muchly complicated the regex so it matches the separator at the end but not a normal semicolon.

Update: The new regex had other problems. I'm reverting for now, pending a real fix tomorrow. The battle of the regex rages on. I shall prevail.

Done.