Для этого требуется проверка на «плохие» паттерны. Если мы разрешаем %20
- нам не нужно проверять, существует ли он.
Как уже говорили другие, %% тоже допустимо ... и %%25
будет %25
Данное регулярное выражение соответствует всем, что не вписывается в вышеприведенные правила
/(?<![^%]%)%(?!(20|%))/
Первые квадратные скобки проверяют, есть ли символ% перед символом (это означает, что он %%
), а также проверяет, не является ли он %%%
. Затем он проверяет% и проверяет, не соответствует ли элемент после 20
Это означает, что если регулярное выражение идентифицирует что-либо, то вам, вероятно, следует отклонить его.