正则表达式中的波浪号运算符
我想知道正则表达式中波浪号运算符的含义是什么。
我有这样一句话:
if (!preg_match('~^\d{10}$~', $_POST['isbn'])) {
$warnings[] = 'ISBN should be 10 digits';
}
我发现这个文档解释了波浪号的含义:~
它说这是一个perl运算符,意味着针对这个正则表达式运行这个变量。=~
但是为什么我的正则表达式包含两个波浪号运算符?
我想知道正则表达式中波浪号运算符的含义是什么。
我有这样一句话:
if (!preg_match('~^\d{10}$~', $_POST['isbn'])) {
$warnings[] = 'ISBN should be 10 digits';
}
我发现这个文档解释了波浪号的含义:~
它说这是一个perl运算符,意味着针对这个正则表达式运行这个变量。=~
但是为什么我的正则表达式包含两个波浪号运算符?
在本例中,它只是用作分隔符。
通常,在PHP中,正则表达式的第一个和最后一个字符是“分隔符”,用于标记匹配部分的开始和结束位置(以防万一您想要在末尾添加修饰符,例如ungreedy等)
通常,PHP从字符串中的第一个字符中算出这一点,该字符串表示正则表达式,将其第二次出现匹配为第二个分隔符。这在文本中出现正常分隔符(例如,文本中出现的 )时非常有用 - 这意味着您不必做尴尬的事情。/
在分隔符设置为 “ 的情况下匹配 ””//
/
"
/\/\//
将 “” 与 “ 的分隔符进行匹配//
#
"
#//#
在这种情况下,它没有任何意义。它只是简单地划分了模式的开始和结束。在 PCRE(Perl 兼容正则表达式)中,即您在 PHP 中与 preg_* 一起使用的内容,模式与表达式选项一起输入,如下所示:
preg_match("/pattern/opt", ...);
但是,在这种情况下使用“/”作为分隔符是任意的 - 尽管正斜杠很受欢迎,但它可以用任何东西替换。在你的情况下,它是波浪号。