2008-10-28 5 views
1

운전 면허증 유효성 검사를 위해 RegEx를 작성하고 싶습니다.RegEx 표현 작성

(US, CA, CN)으로 시작하지 않으면 XX와 그 다음에 알파 숫자 문자가 올 수 있습니다.

예를 들어 운전 면허가 GB로 시작하는 경우 XXGBXX12345363 으로 시작해야합니다. 그러나 미국으로 시작하면 이후에 오는 것이 중요하지 않습니다. USLA039247230

+0

제목을 "Writing RegEx Expression"으로 수정할 수 있습니까? –

답변

3

누구나 운전 면허증에 익숙하지 않다는 것을 기억하십시오. 다음은 정확한 사양입니다 (정규식을 요청할 때 매우 정확하게하려고해야합니다. 그렇지 않으면 얻을 수없는 것들을 얻을 것입니다.) 원하는 :

  • 그 첫 두 글자는 미국, CA 또는 CN 중 하나 인 경우 두 문자가 대문자
  • 로 시작해야하고, 나머지는 숫자 그 첫 번째 두를하면 길이가 지정되지 않은
  • 이어야한다 편지는 US, CA 또는 CN 중 아무 것도 아니므로 다음 두 글자는 X 여야하고, 나머지는 X가되어야합니다. 영숫자이고 불특정 길이 여야합니다.

    ((미국 | CA | CN) [A-Za-z0-9] + | < (US | CA | CN)) [AZ] {2} XX [A-ZA-Z0-9] +)

첫 번째 부분 :!

  • 일치 미국의 한, CA 또는 CN는
  • 하나 이상의 영숫자

두 번째 부분 :

  • 부정적인 보라 okbehind,
  • 는 두 개의 X 문자
  • 하나 이상의 영숫자

이 있습니다

  • 이 대문자
  • 을 가지고 있으며 첫 번째 부분 또는 두 번째 중 하나와 일치 미국 CA CN로 시작하지 않는

    +0

    바깥 괄호 안의 파이프는 둘러보기가 완전히 필요하지 않게 만듭니다. – eyelidlessness

    +0

    또한, "* 숫자가 아닌 숫자를 의미하는"숫자를 읽지 만 논쟁의 여지가 있습니다. 잘못 정의 된 문제. – eyelidlessness

    0
    /^(?:(?:US|CA|CN)\w+|[[:alpha:]]{2}XX\w+)$/ 
    

    내가 할 수있는 더 검증이 있는지 모르겠지만, 이것은 내가 (번호 뒤에 네 글자를 의미하는 것)하여 예, 당신이 쓴 것과하지 얻을 것입니다.

    +0

    \ w는 _에도 일치합니다. –

    0

    정규 표현식 라이브러리에서 허용하는 경우 Look Behind 기능을 사용할 수 있습니다.