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