【问题标题】:preg_replace regex requires forward slash open and close?preg_replace 正则表达式需要正斜杠打开和关闭?
【发布时间】:2012-03-07 03:04:32
【问题描述】:

我正在尝试学习正则表达式。我正在通过尝试检查电子邮件帐户来测试自己。但问题是它出现了一个错误:

在第 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";
}

?>

我发现如果我在模式前后加上一个斜线,它会起作用,但我不太明白它的作用,这与我想要的不完全匹配。

【问题讨论】:

标签: php regex preg-replace


【解决方案1】:

斜线是分隔符,需要更改

$pattern = "^([\w.]+)@w([\w.]+).([\w.]+)";

$pattern = "/^([\w.]+)@w([\w.]+).([\w.]+)/";

将解决您的问题。您需要为正则表达式指定分隔符。在这种情况下,我使用了/,但有很多alternatives you can useInfo here 在 PHP 中使用正则表达式

【讨论】:

    【解决方案2】:

    您的分隔符在 PHP 中不必是斜线,但您确实需要 something 来告诉函数正则表达式的开始和结束位置。斜线 ('/') 和井号 (#) 都是流行的替代方案;我通常更喜欢后者,因为它可以让我在解析 URL 时变得草率。

    $pattern = "#^([\w.]+)@w([\w.]+).([\w.]+)#";
    

    【讨论】:

      【解决方案3】:

      斜线是一个“掩码字符”,用于告诉preg_replace() 正则表达式的开头和结尾是什么。例如,您可以在 RegEx 的最后(即在第二个掩码字符之后)放置几个标志以使其不区分大小写。

      【讨论】:

        【解决方案4】:

        正斜杠是正则表达式分隔符。您还可以使用其他字符作为分隔符,例如{pattern}#pattern#。它们是其他语言(例如 perl)的保留,您不需要将正则表达式括在引号中,例如:

        “苹果梨橙子”=~ /梨子/

        它们还用于分隔正则表达式的各个部分。例如,当您需要大小写交互或替换某些字符时:/pattern/replace/flags

        //This perl code will replace Earth, earth, eArth... with zeus
        "Earth, mars, mercury, pluto" =~ s/earth/zeus/i;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-09
          • 2012-12-16
          • 2012-02-25
          • 1970-01-01
          • 2011-01-12
          • 2019-10-07
          • 2014-05-13
          相关资源
          最近更新 更多