我正在尝试学习正则表达式。我试图通过检查电子邮件帐户来测试自己。但问题是它出现了一个错误:
在第8行的/www/eh11522/public_html/scclib/demo/regex.php中找不到结尾分隔符'^'
这是我的代码:
<?php
$pattern = "^([\w.]+)@w([\w.]+).([\w.]+)";
$email = "tyler@surazinet";
if (!preg_replace($pattern, '', $subject)) {
echo "worked";
} else {
echo "failed";
}
?>
我发现如果我在模式之前和之后加上斜杠,它会起作用,但是我不太明白它是做什么的,这与我想要的完全不符。
答案 0 :(得分:2)
斜杠是分隔符,需要更改
$pattern = "^([\w.]+)@w([\w.]+).([\w.]+)";
到
$pattern = "/^([\w.]+)@w([\w.]+).([\w.]+)/";
将解决您的问题。您需要为正则表达式指定分隔符。在这种情况下,我使用/
,但有很多alternatives you can use。 Info here使用PHP正则表达式
答案 1 :(得分:2)
您的分隔符不一定是PHP中的斜杠,但您需要某些来告诉函数正则表达式的开始和结束位置。斜杠('/')和哈希符号(#
)都是流行的替代品;我通常更喜欢后者,因为它允许我在解析URL时马虎。
$pattern = "#^([\w.]+)@w([\w.]+).([\w.]+)#";
答案 2 :(得分:1)
斜杠是一个“掩盖角色”,告诉preg_replace()
正则表达式的开头和结尾是什么。例如,有一些标志可以放在RegEx的最后(即在第二个屏蔽字符之后),以使其不区分大小写。
答案 3 :(得分:1)
正斜杠是正则表达式分隔符。您还可以使用其他字符作为分隔符,例如{pattern}
,#pattern#
。它们是其他语言的保留,例如perl,你不需要将你的正则表达式括在引号中,例如:
“苹果梨橙”=〜/梨/
它们也用于分离正则表达式的部分内容。例如,当您需要案例交互性或替换某些字符时{em> {/ 1}}
/pattern/replace/flags