Как я могу использовать регулярные выражения в Javascript, чтобы разделить часть URL-адреса без указания фиксированной длины? - PullRequest
0 голосов
/ 17 марта 2020

Я пишу программу для сопоставления путей из моей файловой системы с URL-адресами, извлеченными из базы данных SQL, используя Javascript. Выдвинутые URL-адреса имеют следующую структуру:

http://examplesite.com/wp-content/uploads/YYYY/MM/17818380_1556368674373219_6750790004844265472_n-1.jpg
http://examplesite.com/wp-content/uploads/YYYY/MM/17818380_1556368674373219_6750790004844265472_n.jpg
https://examplesite.com/wp-content/uploads/YYYY/MM/10643960_909727132375975_2074842458_n-44x55.jpg
http://examplesite.com/wp-content/uploads/YYYY/MM/10643960_909727132375975_2078842458_n-320x150.jpg

et c. У некоторых есть http, у некоторых https.

Я пытался сопоставить файлы с URL-адресами с

if(files[i] === urlsfromdb[j].substring(50,urlsfromdb[j].length-4))...

Я хочу получить все после / после ... ММ, но выше иногда включает ведущий sla sh, который в свою очередь разрушает программу. Как я могу выполнить это с помощью регулярных выражений? Я хочу получить все jpgs, и я использую NPM glob для этого.

Кроме того, с файлами, которые имеют - WWWxHHH.jpg, которые могут быть 2 или 3 W или H, я хочу также удалить эти файлы; URL-адреса из БД никогда не будут иметь их, а файлы будут.

Ответы [ 2 ]

3 голосов
/ 17 марта 2020

используйте регулярное выражение, чтобы удалить все до последнего слова sh.

urlsfromdb[j].replace(/^.*\//, '')
0 голосов
/ 17 марта 2020

Если вам нужны только файлы JPEG, вы можете использовать группу захвата, учитывая, что все URL-адреса имеют MM / перед именем изображения. Примерно так должно работать:

let regex = /.*MM\/([A-Za-z_0-9-]+.jpg)/g;
let match = urlsfromdb[j].match(regex)
let image = match[1]
...