Оператор Тильды в регулярных выражениях

Я хочу знать, что означает оператор тильды в регулярных выражениях.

У меня есть это утверждение:

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", ...); 

Однако использование «/» в качестве разделителя в этом случае является произвольным – хотя популярность слэша популярна, его можно заменить чем угодно. В вашем случае это тильда.