apo*_*rat 5 php regex preg-match
我正在尝试使用preg_match修改的preg格式:检查生日格式(dd/mm/yyyy)以匹配信用卡到期日期(yyyy-MM格式)
if (!preg_match('/([0-9]{4})\-([0-9]{2})/', $expirationDate, $matches)) {
throw new Services_Payment_Exception('Card expiration date is invalid');
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,它还会验证无效值,例如20111-02(无效年份).我在这做错了什么?我想确认年份是4位数,月份是2位数(01,02 ... 12)
锚定你的正则表达式:
preg_match('/^([0-9]{4})-([0-9]{2})$/', $expirationDate, $matches)
Run Code Online (Sandbox Code Playgroud)
你的正则表达式没有达到预期的效果,因为它匹配"20111-02"的"0111-02"子串.
锚定 ^并$匹配输入字符串中的特定位置:^匹配字符串的开头并$匹配结尾.
还要注意,没有必要转义连字符,因为它只有一个特殊的功能[].