2 votes

Comment simplifier cette expression régulière pour sélectionner les paramètres de l'image Blogger ?

Bonjour, j'ai écrit l'expression régulière suivante :

/s\B\d{2,4}-c|w\B\d{2,4}-h\B\d{2,4}-c|w\B\d{2,4}-h\B\d{2,4}|w\B\d{2,4}|h\B\d{2,4}|w\B\d{2,4}-c|h\B\d{2,4}-c/

Cela permet de sélectionner toutes les situations possibles

/s1600/
/s1600-c/
/w80-h50/
/w300-h480-c/
/w80/
/w80-c/
/h50/
/h50-c/

Mais je considère qu'il est très long et rugueux, comment pourrais-je faire mieux ? Le code que j'écris est utilisé pour sélectionner les paramètres des images hébergées dans Blogger.

2voto

Ryszard Czech Points 10589

Utilisation

/[a-z]\d{2,4}(?:-[a-z]\d{2,4})?(?:-[a-z])?/

Voir preuve

Explication :

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  [a-z]                    any character of: 'a' to 'z'
--------------------------------------------------------------------------------
  \d{2,4}                  digits (0-9) (between 2 and 4 times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (optional
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    -                        '-'
--------------------------------------------------------------------------------
    [a-z]                    any character of: 'a' to 'z'
--------------------------------------------------------------------------------
    \d{2,4}                  digits (0-9) (between 2 and 4 times
                             (matching the most amount possible))
--------------------------------------------------------------------------------
  )?                       end of grouping
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (optional
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    -                        '-'
--------------------------------------------------------------------------------
    [a-z]                    any character of: 'a' to 'z'
--------------------------------------------------------------------------------
  )?                       end of grouping

0voto

Daniel Abel Points 23

Je réponds à ma question avec le code qui est basé sur les réponses qu'ils m'ont données :

[swh]\d{2,4}(?:-[swh]\d{2,4})?(?:-c)?

J'ai écrit "swh" parce que dans Blogger les paramètres pour les images ne peuvent être que s, w, h et à la fin de l'expression le groupe cherche "-c" s'il existe, puisque c'est le seul que Blogger ajoute ou non.

Cette expression régulière permet de sélectionner les paramètres de l'image, par exemple :

https://2.bp.blogspot.com/-vp696X1HSrA/XaaHyg5BeCI/AAAAAAAAEKs/1JFSJw7LfF0VvWEyifpPd3yqUg92jIG9wCLcBGAsYHQ/s1600/white-ceramic-teacup-in-white-ceramic-saucer-on-railings.jpeg

https://4.bp.blogspot.com/-bX3sMYWmk28/XaaNjJOgAII/AAAAAAAAELM/FfsSjoMMRRIMYra8H4jJcAUDekykUHnUQCLcBGAsYHQ/w450-h640/landscape-photography-of-metal-footbridge-leading-to-the-lake.jpeg

Cela nous permet de remplacer un paramètre par un autre :

var items = document.querySelectorAll("img");

function changeParams() {
   for (var i = items.length; i--;) {
      var img = items[i];
         src = img.src.replace(/[swh]\d{2,4}(?:-[swh]\d{2,4})?(?:-c)?/, "s80-c");
         img.src = src;
    }
}

<button onclick="changeParams()">Change parameters</button>

<img src="https://2.bp.blogspot.com/-vp696X1HSrA/XaaHyg5BeCI/AAAAAAAAEKs/1JFSJw7LfF0VvWEyifpPd3yqUg92jIG9wCLcBGAsYHQ/s600/white-ceramic-teacup-in-white-ceramic-saucer-on-railings.jpeg"/>
<img src="https://4.bp.blogspot.com/-bX3sMYWmk28/XaaNjJOgAII/AAAAAAAAELM/FfsSjoMMRRIMYra8H4jJcAUDekykUHnUQCLcBGAsYHQ/w450-h640/landscape-photography-of-metal-footbridge-leading-to-the-lake.jpeg"/>
<img src="https://1.bp.blogspot.com/-JLtfBusE8vs/XYLX84sOq4I/AAAAAAAAEGY/nL1Ggut-Ny03LMhhrlB2swD5vROHb3ePQCLcBGAsYHQ/s400-c/snow-covered-mountain-night.jpeg"/>
<img src="https://2.bp.blogspot.com/-I-ADLFVdY64/XaaHO27Td9I/AAAAAAAAEKk/yhZ6b07CsZ07gxJeaSJQNvxh2fkiU0hcACLcBGAsYHQ/w500-h640-c/white-and-black-mountain.jpeg"/>

Je vous remercie tous, vous m'avez beaucoup appris.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X