Я хочу знать, что означает оператор тильды в регулярных выражениях.
У меня есть это утверждение:
if (!preg_match('~^\d{10}$~', $_POST['isbn'])) { $warnings[] = 'ISBN should be 10 digits'; }
Я нашел этот документ, объясняющий, что означает тильда: ~
Он сказал, что =~
– это оператор perl, который означает запуск этой переменной против этого регулярного выражения.
Но почему мое регулярное выражение содержит два оператора тильды?
В этом случае он просто используется как разделитель.
Как правило, в PHP первые и последние символы регулярного выражения являются «разделителями», чтобы пометить начальную и конечную позицию соответствующей части (в случае, если вы хотите добавить модификаторы в конце, например, неровные и т. Д.),
Как правило, PHP работает с первым символом в строке, который понимается как регулярное выражение, соответствующее второму его вступлению в качестве второго разделителя. Это полезно, если в тексте присутствует нормальный разделитель (например, вхождения /
в тексте) – это означает, что вам не нужно делать неудобные вещи.
Соответствие для " //
" с разделителем, установленным на " /
"
/\/\//
Соответствие для « //
» с разделителем « #
»
#//#
В этом случае это ничего не значит. Это просто ограничивает начало и конец вашего шаблона. В PCRE (Perl Compatible Regular Expressions), который вы используете с preg_ * в PHP, шаблон вводится вместе с параметрами выражения, например:
preg_match("/pattern/opt", ...);
Однако использование «/» в качестве разделителя в этом случае является произвольным – хотя популярность слэша популярна, его можно заменить чем угодно. В вашем случае это тильда.