Ответ 1
При использовании функций PCRE требуется, чтобы шаблон был заключен в разделители. Разделителем может быть любой небуквенный символ, не обратный слэш, символ без пробелов.
В этом случае он просто использует !
как разделитель. Часто он используется, если вы хотите использовать обычный разделитель внутри самого регулярного выражения без необходимости его избегать. В этом случае не обязательно, так как остальное регулярное выражение просто \d
, но оно очень удобно для таких вещей, как проверка того, что путь содержит более трех уровней каталога. Вы можете использовать любой из:
/\/.*\/.*\/.*\/ blah blah blah /
или
!/.*/.*/.*/ blah blah blah !
Теперь они не были протестированы полностью и могут работать не так, как было объявлено, но вы должны получить общую идею, требующую минимального экранирования.
Другой пример (со страницы, связанной с выше) - проверка, начинается ли строка с маркера http://
. Любой из этих двух:
/^http:\/\//
!^http://!
было бы достаточно, но второе легче понять.