Если вас интересуют URL-адреса в кодировке base64, вы можете это сделать.
Немного теории. Если L
, R
являются обычными языками, а T
является обычным преобразователем, то LR
(объединение), L & R
(пересечение), L | R
(объединение), TR(L)
(изображение), TR^-1(L)
(ядро) - все обычные языки. Каждый регулярный язык имеет регулярное выражение, которое его генерирует, и каждое регулярное выражение генерирует регулярный язык. URL-адреса могут быть описаны обычным языком (за исключением случаев, когда вам нужно подмножество тех, которых нет), почти каждая схема перехода (и base64) является обычным преобразователем. Поэтому теоретически это возможно.
На практике все становится довольно грязно.
Регулярное выражение для допустимых строк base64: ([A-Za-z0-9+/]{4})*(|[A-Za-z0-9+/]{2}(==|[A-Za-z0-9+/]=)
Если он встроен в параметр запроса URL-адреса, он, вероятно, будет закодирован в формате urlencoded. Давайте предположим, что только url будет закодирован (потому что другие символы тоже могут, но не обязаны).
Это приводит нас к чему-то вроде [?&][^?&#=;]+=([A-Za-z0-9+/]{4})*(|[A-Za-z0-9+/]{2}(%3D%3D|[A-Za-z0-9+/]%3D)
Другая возможность состоит в том, чтобы рассматривать только те URL-адреса в кодировке base64, которые имеют какое-либо свойство - в вашем случае все они начинаются с ": //", что очень удачно, потому что это точно соответствует 4 символам "Oi8v". В противном случае это было бы более сложным.
Получается [?&][^?&#=;]+=Oi8v([A-Za-z0-9+/]{4})*(|[A-Za-z0-9+/]{2}(%3D%3D|[A-Za-z0-9+/]%3D)
Как видите, все становится все более и более грязным. Поэтому я бы рекомендовал вам
- разбить URL на его части (например, протокол, хост, строка запроса)
- получить параметры из строки запроса и urldecode их
- попробуйте base64 декодировать по значениям параметров
- применить ваш критерий для "хороших закодированных URL"