2017-03-29 1 views
1

쉼표 구분 기호로 여러 날짜의 정규식을 설정하는 데 문제가 있습니다. 내가 여러 날짜를 (JQuery와 캘린더)을 선택하는 PHP 유효성 검사를 설정하려고PHP에서 쉼표로 구분 된 날짜의 정규식

.....

2017-03-25, 2017-03-27, 2017-03-28 

나에게 사람들을 도와주세요 : 나는으로 같은 날짜가 .

내 정규식은 다음과 같습니다 당신은 당신의 정규식 그 후 0+ 자리 오직 하나의 날짜와 일치하는

$value = "2017-03-25, 2017-03-27, 2017-03-28"; 
preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])([0-9])*$/",$value) 
+0

코드에 어떤 문제가 있습니까? – Jens

답변

2

. 문자열의 시작

  • ([0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])) - - 그룹 1 매칭 및 캡처

    • ^ :

      ^([0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01]))(?:,\s*(?1))*$ 
      

      regex demo

      세부를 참조하십시오

      는 다음과 같은 수정 프로그램을 사용할 수 있습니다 날짜 같은 문자열

    • (?:,\s*(?1))* - 0 개 이상의 시퀀스 :
      • , - 쉼표
      • \s* - 0+ 공백 (하나의 일치 *를 제거하거나 1 또는 0 공백에 맞게 ? 사용)
      • (?1) - 반복 그룹 1 하위 패턴
    • $ - 문자열 끝.
  • +1

    고맙습니다. ..... 그 작업 ..... –

    +0

    @Wiktor "(? 1) - recurse Group 1 subpattern"은 놀랄만 한 일이지만 ... PHP에서만 작동합니까? 내 말은 정확한 구문을 뜻합니다 ... 그냥 링크를 가서 파이썬, 가서, 자바 스크립트로 이동하고 작동하지 않았다 ... 알고 궁금 해서요 :) –

    +1

    @ RizwanM.Tuman : 그것은 파이썬에서 작동하지 않습니다 그러나 Boost (예 : Notepad ++)에서도 작동합니다. Ruby (즉, Onigmo 라이브러리)에서'(? 1)'대신'\ g <1>'을 사용할 수 있습니다. Python에서 PyPi 정규식 모듈은'(? 1)'서브 루틴 호출도 지원합니다. –

    관련 문제