Как можно упростить это регулярное выражение, чтобы выбрать параметры изображения Blogger? - PullRequest
2 голосов
/ 08 июля 2020

Доброе утро, я написал следующее регулярное выражение:

/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/

Это служит для выбора всех возможных ситуаций

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

Но я считаю это очень длинным и грубым, как Могу я сделать лучше? Код, который я пишу, используется для выбора параметров изображений, размещенных в Blogger.

Ответы [ 2 ]

3 голосов
/ 08 июля 2020

Используйте

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

См. proof

Пояснение:

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
0 голосов
/ 09 июля 2020

Я отвечаю на свой вопрос кодом, основанным на ответах, которые они мне дали:

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

Я написал «swh», потому что в Blogger параметры изображений могут быть только s, w, h а в конце выражения группа ищет "- c", если он существует, поскольку это единственный добавленный Blogger или нет.

С помощью этого регулярного выражения вы можете выбрать параметры изображения, например:

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

Это позволяет нам изменить параметр на другой:

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"/>

Большое спасибо, я многому у вас научился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...