Prólogo
Después de instalar una extensión de navegador anti-XSS, Stack Snippets dejó de funcionar repentinamente en toda la red de Stack Exchange. ¡Ya no podía aprender de Stack Overflow , ver demostraciones de trabajo sobre la experiencia del usuario y, lo peor de todo, no podía probar las respuestas de JavaScript en Programming Puzzles y Code Golf ! Desesperadamente busqué un remedio y encontré un pequeño cuadro de entrada en la configuración, en el que podía colocar una sola expresión regular. No cabía en todos los sitios de Stack Exchange en este pequeño cuadro, así que pedí ayuda. Esta es esa pregunta.
Tarea
Su tarea es crear una expresión regular que coincida con todas las URL del sitio web de Stack Exchange, sin que coincida ningún dominio que no sea propiedad de Stack Overflow Inc ..
Su expresión regular debe coincidir con todas las URL con las siguientes partes:
protocol
: esto seráhttp://
ohttps://
.domain
: este será un elemento de esta lista:stackoverflow.com www.stackoverflow.com facebook.stackoverflow.com serverfault.com superuser.com meta.stackexchange.com webapps.stackexchange.com nothingtoinstall.com meta.webapps.stackexchange.com meta.nothingtoinstall.com gaming.stackexchange.com arqade.com thearqade.com meta.gaming.stackexchange.com meta.arqade.com meta.thearqade.com webmasters.stackexchange.com webmaster.stackexchange.com meta.webmasters.stackexchange.com meta.webmaster.stackexchange.com cooking.stackexchange.com seasonedadvice.com meta.cooking.stackexchange.com meta.seasonedadvice.com gamedev.stackexchange.com meta.gamedev.stackexchange.com photo.stackexchange.com photography.stackexchange.com photos.stackexchange.com meta.photo.stackexchange.com meta.photography.stackexchange.com meta.photos.stackexchange.com stats.stackexchange.com statistics.stackexchange.com crossvalidated.com meta.stats.stackexchange.com meta.statistics.stackexchange.com math.stackexchange.com maths.stackexchange.com mathematics.stackexchange.com meta.math.stackexchange.com diy.stackexchange.com meta.diy.stackexchange.com meta.superuser.com meta.serverfault.com gis.stackexchange.com meta.gis.stackexchange.com tex.stackexchange.com meta.tex.stackexchange.com askubuntu.com ubuntu.stackexchange.com meta.askubuntu.com meta.ubuntu.stackexchange.com money.stackexchange.com basicallymoney.com www.basicallymoney.com meta.money.stackexchange.com english.stackexchange.com elu.stackexchange.com meta.english.stackexchange.com stackapps.com ux.stackexchange.com ui.stackexchange.com meta.ux.stackexchange.com meta.ui.stackexchange.com unix.stackexchange.com linux.stackexchange.com meta.unix.stackexchange.com meta.linux.stackexchange.com wordpress.stackexchange.com meta.wordpress.stackexchange.com cstheory.stackexchange.com meta.cstheory.stackexchange.com apple.stackexchange.com askdifferent.com meta.apple.stackexchange.com rpg.stackexchange.com meta.rpg.stackexchange.com bicycles.stackexchange.com bicycle.stackexchange.com cycling.stackexchange.com bikes.stackexchange.com meta.bicycles.stackexchange.com meta.bicycle.stackexchange.com programmers.stackexchange.com programmer.stackexchange.com meta.programmers.stackexchange.com electronics.stackexchange.com chiphacker.com www.chiphacker.com meta.electronics.stackexchange.com android.stackexchange.com meta.android.stackexchange.com boardgames.stackexchange.com boardgame.stackexchange.com meta.boardgames.stackexchange.com physics.stackexchange.com meta.physics.stackexchange.com homebrew.stackexchange.com homebrewing.stackexchange.com brewadvice.com meta.homebrew.stackexchange.com meta.homebrewing.stackexchange.com security.stackexchange.com itsecurity.stackexchange.com meta.security.stackexchange.com meta.itsecurity.stackexchange.com writers.stackexchange.com writer.stackexchange.com writing.stackexchange.com meta.writers.stackexchange.com video.stackexchange.com avp.stackexchange.com meta.video.stackexchange.com meta.avp.stackexchange.com graphicdesign.stackexchange.com graphicsdesign.stackexchange.com graphicdesigns.stackexchange.com meta.graphicdesign.stackexchange.com dba.stackexchange.com meta.dba.stackexchange.com scifi.stackexchange.com sciencefiction.stackexchange.com fantasy.stackexchange.com meta.scifi.stackexchange.com codereview.stackexchange.com meta.codereview.stackexchange.com codegolf.stackexchange.com meta.codegolf.stackexchange.com quant.stackexchange.com meta.quant.stackexchange.com pm.stackexchange.com meta.pm.stackexchange.com skeptics.stackexchange.com skeptic.stackexchange.com skepticexchange.com meta.skeptics.stackexchange.com fitness.stackexchange.com meta.fitness.stackexchange.com drupal.stackexchange.com meta.drupal.stackexchange.com mechanics.stackexchange.com garage.stackexchange.com meta.mechanics.stackexchange.com meta.garage.stackexchange.com parenting.stackexchange.com meta.parenting.stackexchange.com sharepoint.stackexchange.com sharepointoverflow.com www.sharepointoverflow.com meta.sharepoint.stackexchange.com music.stackexchange.com guitars.stackexchange.com guitar.stackexchange.com meta.music.stackexchange.com sqa.stackexchange.com meta.sqa.stackexchange.com judaism.stackexchange.com mi.yodeya.com yodeya.com yodeya.stackexchange.com miyodeya.com meta.judaism.stackexchange.com german.stackexchange.com deutsch.stackexchange.com meta.german.stackexchange.com japanese.stackexchange.com meta.japanese.stackexchange.com philosophy.stackexchange.com meta.philosophy.stackexchange.com gardening.stackexchange.com landscaping.stackexchange.com meta.gardening.stackexchange.com travel.stackexchange.com meta.travel.stackexchange.com productivity.stackexchange.com meta.productivity.stackexchange.com crypto.stackexchange.com cryptography.stackexchange.com meta.crypto.stackexchange.com meta.cryptography.stackexchange.com dsp.stackexchange.com signals.stackexchange.com meta.dsp.stackexchange.com french.stackexchange.com meta.french.stackexchange.com christianity.stackexchange.com meta.christianity.stackexchange.com bitcoin.stackexchange.com meta.bitcoin.stackexchange.com linguistics.stackexchange.com linguist.stackexchange.com meta.linguistics.stackexchange.com hermeneutics.stackexchange.com meta.hermeneutics.stackexchange.com history.stackexchange.com meta.history.stackexchange.com bricks.stackexchange.com meta.bricks.stackexchange.com spanish.stackexchange.com espanol.stackexchange.com meta.spanish.stackexchange.com scicomp.stackexchange.com meta.scicomp.stackexchange.com movies.stackexchange.com meta.movies.stackexchange.com chinese.stackexchange.com meta.chinese.stackexchange.com biology.stackexchange.com meta.biology.stackexchange.com poker.stackexchange.com meta.poker.stackexchange.com mathematica.stackexchange.com meta.mathematica.stackexchange.com cogsci.stackexchange.com meta.cogsci.stackexchange.com outdoors.stackexchange.com meta.outdoors.stackexchange.com martialarts.stackexchange.com meta.martialarts.stackexchange.com sports.stackexchange.com meta.sports.stackexchange.com academia.stackexchange.com academics.stackexchange.com meta.academia.stackexchange.com cs.stackexchange.com computerscience.stackexchange.com meta.cs.stackexchange.com workplace.stackexchange.com meta.workplace.stackexchange.com windowsphone.stackexchange.com meta.windowsphone.stackexchange.com chemistry.stackexchange.com meta.chemistry.stackexchange.com chess.stackexchange.com meta.chess.stackexchange.com raspberrypi.stackexchange.com meta.raspberrypi.stackexchange.com russian.stackexchange.com meta.russian.stackexchange.com islam.stackexchange.com meta.islam.stackexchange.com salesforce.stackexchange.com meta.salesforce.stackexchange.com patents.stackexchange.com askpatents.com askpatents.stackexchange.com meta.patents.stackexchange.com meta.askpatents.com meta.askpatents.stackexchange.com genealogy.stackexchange.com meta.genealogy.stackexchange.com robotics.stackexchange.com meta.robotics.stackexchange.com expressionengine.stackexchange.com meta.expressionengine.stackexchange.com politics.stackexchange.com meta.politics.stackexchange.com anime.stackexchange.com meta.anime.stackexchange.com magento.stackexchange.com meta.magento.stackexchange.com ell.stackexchange.com meta.ell.stackexchange.com sustainability.stackexchange.com meta.sustainability.stackexchange.com tridion.stackexchange.com meta.tridion.stackexchange.com reverseengineering.stackexchange.com meta.reverseengineering.stackexchange.com networkengineering.stackexchange.com meta.networkengineering.stackexchange.com opendata.stackexchange.com meta.opendata.stackexchange.com freelancing.stackexchange.com meta.freelancing.stackexchange.com blender.stackexchange.com meta.blender.stackexchange.com mathoverflow.net mathoverflow.stackexchange.com mathoverflow.com meta.mathoverflow.net space.stackexchange.com thefinalfrontier.stackexchange.com meta.space.stackexchange.com sound.stackexchange.com socialsounddesign.com sounddesign.stackexchange.com meta.sound.stackexchange.com astronomy.stackexchange.com meta.astronomy.stackexchange.com tor.stackexchange.com meta.tor.stackexchange.com pets.stackexchange.com meta.pets.stackexchange.com ham.stackexchange.com meta.ham.stackexchange.com italian.stackexchange.com meta.italian.stackexchange.com pt.stackoverflow.com br.stackoverflow.com stackoverflow.com.br meta.pt.stackoverflow.com meta.br.stackoverflow.com aviation.stackexchange.com meta.aviation.stackexchange.com ebooks.stackexchange.com meta.ebooks.stackexchange.com alcohol.stackexchange.com beer.stackexchange.com dranks.stackexchange.com meta.alcohol.stackexchange.com meta.beer.stackexchange.com softwarerecs.stackexchange.com meta.softwarerecs.stackexchange.com arduino.stackexchange.com meta.arduino.stackexchange.com cs50.stackexchange.com meta.cs50.stackexchange.com expatriates.stackexchange.com expats.stackexchange.com meta.expatriates.stackexchange.com matheducators.stackexchange.com meta.matheducators.stackexchange.com meta.stackoverflow.com earthscience.stackexchange.com meta.earthscience.stackexchange.com joomla.stackexchange.com meta.joomla.stackexchange.com datascience.stackexchange.com meta.datascience.stackexchange.com puzzling.stackexchange.com meta.puzzling.stackexchange.com craftcms.stackexchange.com meta.craftcms.stackexchange.com buddhism.stackexchange.com meta.buddhism.stackexchange.com hinduism.stackexchange.com meta.hinduism.stackexchange.com communitybuilding.stackexchange.com moderator.stackexchange.com moderators.stackexchange.com meta.communitybuilding.stackexchange.com meta.moderators.stackexchange.com startups.stackexchange.com meta.startups.stackexchange.com worldbuilding.stackexchange.com meta.worldbuilding.stackexchange.com ja.stackoverflow.com jp.stackoverflow.com meta.ja.stackoverflow.com emacs.stackexchange.com meta.emacs.stackexchange.com hsm.stackexchange.com meta.hsm.stackexchange.com economics.stackexchange.com meta.economics.stackexchange.com lifehacks.stackexchange.com meta.lifehacks.stackexchange.com engineering.stackexchange.com meta.engineering.stackexchange.com coffee.stackexchange.com meta.coffee.stackexchange.com vi.stackexchange.com vim.stackexchange.com meta.vi.stackexchange.com musicfans.stackexchange.com meta.musicfans.stackexchange.com woodworking.stackexchange.com meta.woodworking.stackexchange.com civicrm.stackexchange.com meta.civicrm.stackexchange.com health.stackexchange.com meta.health.stackexchange.com ru.stackoverflow.com hashcode.ru stackoverflow.ru meta.ru.stackoverflow.com meta.hashcode.ru rus.stackexchange.com russ.hashcode.ru russ.stackexchange.com meta.rus.stackexchange.com mythology.stackexchange.com meta.mythology.stackexchange.com law.stackexchange.com meta.law.stackexchange.com opensource.stackexchange.com meta.opensource.stackexchange.com elementaryos.stackexchange.com meta.elementaryos.stackexchange.com portuguese.stackexchange.com meta.portuguese.stackexchange.com computergraphics.stackexchange.com meta.computergraphics.stackexchange.com hardwarerecs.stackexchange.com meta.hardwarerecs.stackexchange.com es.stackoverflow.com meta.es.stackoverflow.com 3dprinting.stackexchange.com threedprinting.stackexchange.com meta.3dprinting.stackexchange.com ethereum.stackexchange.com meta.ethereum.stackexchange.com latin.stackexchange.com meta.latin.stackexchange.com languagelearning.stackexchange.com meta.languagelearning.stackexchange.com retrocomputing.stackexchange.com meta.retrocomputing.stackexchange.com crafts.stackexchange.com meta.crafts.stackexchange.com korean.stackexchange.com meta.korean.stackexchange.com monero.stackexchange.com meta.monero.stackexchange.com ai.stackexchange.com meta.ai.stackexchange.com esperanto.stackexchange.com meta.esperanto.stackexchange.com sitecore.stackexchange.com meta.sitecore.stackexchange.com
page
: esta será la cadena vacía/
o/
seguida de cualquier cadena
La url será la cadena creada al agregar protocol
, domain
y page
entre sí, en ese orden.
Casos de prueba
Su expresión regular debe coincidir con:
/codegolf//
http://retrocomputing.stackexchange.com
https://facebook.stackoverflow.com/questions/1234
http://meta.nothingtoinstall.com/thisisa404.php?file=command.com
Su expresión regular no debe coincidir con:
http//codegolf.stackexchange.com/
https://meta.stackoverflow.com.fakesite.dodgy/cgi-bin/virus.cgi?vector=apt
file://www.stackoverflow.com/
http://ripoff.com/stackoverflow.com/q/1234/
Su expresión regular puede coincidir con:
http://panda.stackexchange.com/
https://www.meta.codegolf.stackexchange.com
http://alpha.beta.charlie.delta.chiphacker.com
https://stackexchange.com/sites/
porque son propiedad de Stack Exchange Inc. y, por lo tanto, no serán vulnerables a los ataques XSS.
Este es un desafío de código de golf , por lo que gana la expresión regular más corta.
fuente
Respuestas:
337336333327 bytesNo utiliza ninguna característica elegante de expresiones regulares, por lo que debería funcionar en cualquier sabor de expresión regular.
fuente
seasonedadvice
con elbrewadvice
lugar de con las otrass
palabras.359348 bytesProbarlo en RegExr
fuente
2179 20921966 bytesCoincide exactamente con los dominios enumerados y nada más. Hice la mayor parte de la compresión a mano. Estoy un poco avergonzado de haber pasado tanto tiempo en ello.
fuente
.com
compresión que puedas hacer?142140334 bytes#
como delimitador para/
no necesita escapar (se guardaron dos bytes)fuente