正则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为任何东西。 在你的情况下,它是波浪。