2017-03-02 2 views
0

뭐야?그룹 캡처 문제가있는 정규식 한정 기호

일부 정규 표현식을 사용하려고하는데, "이상한"(?) 동작이 있습니다.

나는 다음과 같은 검증하는 정규식 필요 : 12 자 이상이어야합니다 (전혀 공백)

  • 숫자 만
  • 10로 시작 또는 11

작업 후 잠시 동안 이것에 붙어 있습니다 :

^(10|11)[0-9]{10}$ 

원하는대로 작동하는 것 같지만, 언뜻보기에는 오해의 소지가 있으므로 만족하지 못합니다. 최대 12 자 여야하지만 '시작 문자'는 최대 10 자까지 유효합니다.

왜 이런 일이 발생했는지 설명하는 데 더 나은 해결책이나주의가 있습니까? . 사전에

감사합니다 (:

+0

2 12 자 사이에있을 수 있다는 것을 의미한다. .. 당신은 정규식 문자열이 어떻게 보이는지 좋아하지 않아 ..? – Oneiros

+0

코드를 유지 보수 할 때 오해의 소지가 있으므로 실제로는 12를 검증하는 10 자 길이의 유효성 검증이 있습니다. – Ambrosi

+1

_eye_ 문제가있는 경우 다음을 사용하십시오.^(? = (10 | 11)) [0-9] {12} $' – sln

답변

1

아니고 원하는대로 작업
{10}는 귀하의 경우 정확히 10 자리 숫자를 의미
이 당신은 {0,10} 오해 부분으로 Matches between 0 and 10 times, as many times as possible, giving back as needed

을 사용할 수 있습니다 -의 주관적인. , 번호가 10 또는 11로 시작해야하므로 2 자리 길이 여야하며 다른 10 자리 이상을 허용 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다! 죄송합니다. 최대 문자에 오류가 있습니다. 내 잘못입니다. P 실제로는 "12 자 여야합니다." 따라서 한정사에 대한이 동작은 정상입니까? – Ambrosi

+0

예, "10 또는 11로 시작하고 12 자리 길이"와 같은 것을보고 싶었고 정규 표현식에서 "12"가 보이지 않으면 불편 함을 느꼈습니다. @sln 제안을 사용할 수있는 경우 – dimamah

0

내가 필요한 것은 fo llowing는 :

^(10|11)[0-9]{0,10}$ 

이는 10 또는 11로 시작하고 내가 원하는대로 작동하면 문제가 무엇을 이해하지 못하는 길이

Try it here