不能';在Php正则表达式中,我们无法比较四个斜杠来得到一个斜杠
我正在尝试打印日期,以检测此格式的日期不能';在Php正则表达式中,我们无法比较四个斜杠来得到一个斜杠,php,regex,Php,Regex,我正在尝试打印日期,以检测此格式的日期dd\mm\yyyy,并且我已经阅读了stackoverflow,我必须使用它来使用正则表达式查找斜杠斜杠 所以我就这样做了, $dob = "01\01\2014"; preg_match("/\d{2}\\\\\d{2}\\\\\d{4}/",$dob) 但是当我在if块中运行它时,它总是返回false,但是当我用-替换斜杠时,就像这样 $dob = "01-01-2014"; 及 那么它就可以正常工作了 这是我用反斜杠表示日期的完整代码 <?
dd\mm\yyyy
,并且我已经阅读了stackoverflow,我必须使用它来使用正则表达式查找斜杠斜杠
所以我就这样做了,
$dob = "01\01\2014";
preg_match("/\d{2}\\\\\d{2}\\\\\d{4}/",$dob)
但是当我在if
块中运行它时,它总是返回false
,但是当我用-
替换斜杠时,就像这样
$dob = "01-01-2014";
及
那么它就可以正常工作了
这是我用反斜杠表示日期的完整代码
<?php
$dob = "01\01\2014";
$err_msg = "none";
if (preg_match("/\d{2}\\\\\d{2}\\\\\d{4}/",$dob)){
$err_msg = "<p>Correct</p>";
}
echo $err_msg;
?>
代码运行得很好
<?php
$dob = "01-01-2014";
$err_msg = "none";
if (preg_match("/\d{2}-\d{2}-\d{4}/",$dob)){
$err_msg = "<p>Correct</p>";
}
echo $err_msg;
?>
您只需要3
。一个用于转义\
,另一个用于转义d
。请参阅演示
您只需要3
。一个用于转义\
,另一个用于转义d
。请参阅演示
这应该可以:
$dob = "01\\01\\2014";
if (preg_match("/\d{2}\\\\\d{2}\\\\\d{4}/",$dob)) {
echo "matched\n";
}
基本上,在原始变量中保留\\
,以在变量中获得反斜杠。这应该可以:
$dob = "01\\01\\2014";
if (preg_match("/\d{2}\\\\\d{2}\\\\\d{4}/",$dob)) {
echo "matched\n";
}
基本上,将\\
保留在原始变量中以获得变量中的反斜杠。它仍然不起作用,但另一个人的答案起作用。您的答案在您提供的链接中有效,但在PHP中无效,这是为什么?@RileyWillow$dob
与“01\01\2014
完全相同。因为另一个答案修改了$dob
我明白了,但是当我尝试这个预匹配(/\d{2}\\\\\\d{2}\\\\\\\\\\d{4}/”,$dob)
它不起作用,但此模式在您的演示链接中起作用provided@RileyWillow“01\01\2014“
此处\1
可能是转义码。因此,此字符串正在转换为其他形式。另一种方法是correct@RileyWillow它在regex101上工作的原因是因为那里的\1
是\1
不是一些转义代码它仍然不工作,但另一个人的答案是有效的。您的答案在您提供的链接中有效,但在PHP中无效,这是为什么?@RileyWillow$dob
与“01\01\2014
完全相同。因为另一个答案修改了$dob
我明白了,但是当我尝试这个预匹配(/\d{2}\\\\\\d{2}\\\\\\\\\\d{4}/”,$dob)
它不起作用,但此模式在您的演示链接中起作用provided@RileyWillow“01\01\2014“
此处\1
可能是转义码。因此,此字符串正在转换为其他形式。另一种方法是correct@RileyWillow它在regex101上工作的原因是因为\1
是\1
而不是一些转义码如果斜杠是向前的呢?而且,$dob
中只有一个斜杠,不是两个正斜杠不需要转义,而是反斜杠需要两个转义。是的,它确实是一个反斜杠。当您使用echo$dob代码>它将只显示一个反斜杠,因为\\使其成为字符串中的一个反斜杠<代码>echo“01\01\2014”
将输出一组无效的字符。但是,$dob
的值是用户输入的,因此用户将始终输入一个斜杠,而不是两个斜杠,然后我必须用两个字符替换单个字符以匹配模式,同样,如果我尝试preg_match(“/\d{2}/\d{2}/\d{4}/”,$dob)
要匹配正斜杠,它在php上不起作用,但如果斜杠是正斜杠,它会很好地匹配?而且,$dob
中只有一个斜杠,不是两个正斜杠不需要转义,而是反斜杠需要双转义。是的,它确实是一个反斜杠。当您使用echo$dob代码>它将只显示一个反斜杠,因为\\使其成为字符串中的一个反斜杠<代码>echo“01\01\2014”
将输出一组无效的字符。但是,$dob
的值是用户输入的,因此用户将始终输入一个斜杠,而不是两个斜杠,然后我必须用两个字符替换单个字符以匹配模式,同样,如果我尝试preg_match(“/\d{2}/\d{2}/\d{4}/”,$dob)
要匹配正斜杠,它在php上不起作用,但在为变量使用单引号时匹配得很好,您会很好:$dob='01\01\2014'代码>。请注意,您的检查将确定日期,例如31\99\2015
,因为您只检查位数。也许你想看看这个方法。对变量使用单引号,你会没事的:$dob='01\01\2014'代码>。请注意,您的检查将确定日期,例如31\99\2015
,因为您只检查位数。也许你想看看这个方法。
$dob = "01\\01\\2014";
if (preg_match("/\d{2}\\\\\d{2}\\\\\d{4}/",$dob)) {
echo "matched\n";
}