正则expression式中的Tilde运算符

我想知道正则expression式中tilde运算符的含义。

我有这样的说法:

if (!preg_match('~^\d{10}$~', $_POST['isbn'])) { $warnings[] = 'ISBN should be 10 digits'; } 

我发现这个文件解释了什么意义代表: ~

它表示=~是一个perl运算符,意味着对这个正则expression式运行这个variables。

但是为什么我的正则expression式包含两个波形符号运算符?

在这种情况下,它只是被用作分隔符。

通常,在PHP中,正则expression式的第一个和最后一个字符是“分隔符”,用于标记匹配部分的开始和结束位置(如果您想在末尾添加修饰符,如ungreedy等)

一般来说,PHP是从string中的第一个字符开始的,它是一个正则expression式,匹配第二个string作为第二个分隔符。 如果文本中出现正常的分隔符(例如,文本中出现/),这非常有用 – 这意味着您不必做出尴尬的事情。

将分隔符设置为“ / ”匹配“ //

/\/\//

与“ # ”的分隔符匹配“ //

#//#

在这种情况下,这并不意味着什么。 它只是简单的划分你的模式的开始和结束。 在PCRE(Perl兼容的正则expression式)中,这是你在PHP中使用的preg_ *,模式是沿着expression式选项input的,如下所示:

 preg_match("/pattern/opt", ...); 

然而,在这种情况下使用“/”作为分隔符是任意的 – 虽然正斜杠很受欢迎,但它可以replace为任何东西。 在你的情况下,它是波浪。