> 백엔드 개발 > PHP 튜토리얼 > 내 PHP ISO 날짜 정규식이 일치하지 않는 이유는 무엇입니까?

내 PHP ISO 날짜 정규식이 일치하지 않는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-13 05:39:08
원래의
610명이 탐색했습니다.

Why Isn't My PHP ISO Date Regular Expression Matching?

내 ISO 날짜가 패턴과 일치하지 않는 이유는 무엇입니까?

주어진 정규식은 다음과 같습니다.

/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/
로그인 후 복사

"YYYY-MM-DD HH:MM:SS" 형식의 ISO 스타일 날짜와 일치합니다. 그러나 기준을 충족함에도 불구하고 false를 반환합니다. 문제는 표현식을 묶는 슬래시(/)에 있습니다.

PHP 정규 표현식 구분 기호

PHP에서 정규 표현식은 구분 기호(일반적으로 슬래시(/))로 묶어야 합니다. ), 그러나 큰따옴표(")도 사용할 수 있습니다. / 구분 기호는 정규식의 시작과 끝을 정의하고 충돌을 방지하는 데 사용됩니다.

문제 해결

문제를 해결하려면 다음을 확인하세요.

  1. 올바른 구분 기호: 정규식을 묶으려면 큰따옴표(")를 사용하세요. text:
if(preg_match("/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/", $date) >= 1)
로그인 후 복사
  1. 식 내 작은따옴표: 정규식 내에서 작은따옴표를 사용해야 하는 경우 백슬래시()로 이스케이프 처리하세요.
if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) \'([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
로그인 후 복사

DateTime을 사용하는 대체 옵션 클래스

정규 표현식을 사용하는 대신 더욱 강력하고 안정적인 날짜 확인 및 조작 기능을 제공하는 PHP DateTime 클래스 사용을 고려해 보세요.

function validateDate($date, $format = 'Y-m-d H:i:s')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}
로그인 후 복사

이 함수는 다음에 대해 true를 반환합니다. 유효한 날짜는 거짓이고 유효하지 않은 날짜는 거짓입니다. ISO를 포함한 다양한 형식의 날짜를 확인하는 데 사용할 수 있습니다.

위 내용은 내 PHP ISO 날짜 정규식이 일치하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿