【问题标题】:Date regular expression gives error日期正则表达式给出错误
【发布时间】:2010-07-24 20:16:05
【问题描述】:

我整天都在研究我的日期正则表达式...... 我希望日期格式为 YYYY-MM-DD。

$date_regex ='^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$';

if (preg_match($date_regex, $dateString)) {
        echo "good format";
    }

老是报错

preg_match() [function.preg-match]:在第 19 行的 test.php 中找不到结束分隔符 '^'

有人帮忙吗??非常感谢!!

【问题讨论】:

    标签: php regex date format


    【解决方案1】:

    您需要将正则表达式包装在一对定界字符中。此外,您需要使用 \ 转义字符类中的破折号。

    试试这个(我使用#作为分隔符):

    $date_regex ='#^(19|20)\d\d[\- /.](0[1-9]|1[012])[\- /.](0[1-9]|[12][0-9]|3[01])$#';
    

    【讨论】:

      【解决方案2】:

      你需要包含 /s 否则正则表达式会认为你用 ^ 限制它

      '/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/'
      

      问候

      【讨论】:

      • AAh BoltClock 击败了我,并给出了更好的启动答案:p
      • 如果您使用/,您需要转义正则表达式中的其他/s,这样PHP 就不会过早结束正则表达式。特别是在字符类中(也转义破折号):[\- \/.]
      • 也尝试将相关的 /s 加粗,但代码位没有找到它们:s
      • 是的,在 Perl 中也一样,非常习惯在正则表达式中写 \/,
      猜你喜欢
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      相关资源
      最近更新 更多