Validate a Wikipedia page name Wikipedia has several restrictions on an article's title. I summarize them here:


It may not be empty.
It may not begin with a lowercase letter. A character is considered lowercase if it has an Ll after its name in UnicodeData.txt.
It may not contain any of the characters: # &lt; &gt; [ ] | { } _
It may not be . or ..
It may not begin with ./ or ../.
It may not contain /./ or /../.
It may not end with /. or /...
It may not contain any space character (a character is considered a space if it has Zs after its name in UnicodeData.txt) except for U+0020 SPACE.
It may not contain more than one consecutive space.
It may not consist entirely of spaces.
It may not begin with a colon.
It may not begin with the language prefix of any of the 292 language editions of Wikipedia followed by a colon. This includes en: for English.
It may not begin with the prefix of another Wikimedia Foundation project or its shortcut followed by a colon.
It may not contain the character % followed by two hexadecimal digits.
It may not contain a named HTML character entity. Numbered entities are already forbidden through #.
It must contain no more than 256 bytes when encoded in UTF-8.


Write a function that takes in a string (or whatever data type your language normally uses to manipulate text) and outputs a boolean indicating whether the string is a valid Wikipedia article title. You are permitted to use networking libraries to download and read from any page that I linked in this question.
Retina, 1221 bytes
^(?=...:|\w|(^|.*/)\.\.?(/.*|$)|.*([#&lt;&gt;\[\]|{}]|  |__|%[0-9a-fA-F]{2}|&amp;#(\d{4}|[0-9a-fA-F]{4}|a(mp|pos)|(l|g|quo)t);|~~~)|[ _]*$|.{257,}).*
no
^(?!no$).+
yes

where ... is:
(w(ik(i(s(pecies|ource)|v(ersity|oyage)|([mp]edi|dat)a|(book|new)s|quote|tech)|t(ionary)?)|m(i[dlnt]|c[ahz]|a[ru]|b[de]|d[ek]|h[ku]|n[lo]|r[su]|u[ak]|fi?|mk|pl|se|tw)|ar?|uu|o)?|m(e(dia(wikiwiki|zilla)|t(awikipedi)?a)|a(p-bms|i)|[klnr]|[ghi]|[iz]n|[st]|yv?|df|hr|rj|us|wl)|s([degh]|t(rategy|q)|i(mple)?|[klmnoqr]|c(n?|o)|pecies|[uvw]|[st]|ah?|rn|zl)|b(a(t-smg|r?)|ug(zilla)?|e-tarask|[eghi]|[mno]|[rs]|cl|jn|py|xr)|t([aghw]|e(stwiki|t)?|[iklno]|oollabs|[rst]|yv?|pi|um)|c(o(mmons)?|h[ory]?|[es]b?|bk-zam|[uvy]|rh?|do|kb|a)|p(habricator|a[gmp]?|n[bt]|[st]|f?l|ih?|cd|dc|ms)|n(ds(-nl)?|[glno]|a[hp]?|[vy]|ew?|ov|rm|so)|a([afkm]|r[cz]?|[vyz]|ng?|st?|z?b|ce|dy|ls)|k([gijklmnor]|[uvwy]|a[ab]?|sh?|bd|oi|rc)|z(h(-(classical|min-nan|yue))?|e?a|u)|f([afijory]|oundation|iu-vro|r[pr]|ur)|l([gi]|[no]|ad?|be?|tg?|ez|ij|mo|rc|v)|r([nw]|o(a-(tara|rup))?|my?|ue?)|g(a[gn]?|[dln]|o[mt]|[uv]|lk)|h([eiortu]|a[kw]?|[yz]|if|sb)|i([adegikostu]|ncubator|lo)|v(e(c?|p)|oy?|ls|i)|d([vz]|[ae]|iq|sb)|e([elnostu]|ml|xt)|u([gz]|[kr]|dm)|j([av]|bo)|x(al|mf|h)|[nbqsvcdm]|o[cmrs]|y[io]|qu|)

(I used this regex optimizer and manutally typed in all the data)
Try it online without the ...!