^[a-zA-Z0-9]{6}-?[a-zA-Z0-9]{0,4}$
이 다른 사람의 일부 간결 아니지만, 방탄이다. Tanaskius와 Streetpc의 솔루션은 \w
이 밑줄과 일치하므로 ______-____
과 일치합니다.
하나의 질문 : 대시가 선택 사항이며 다음 4 개의 문자는 선택 사항이므로 111111AAAA
과 일치해야합니까? 그렇다면, 위의 정규 표현식은 당신을위한 것입니다. 왜냐하면 Tanascius는 이것을 맞출 수 없기 때문입니다. 그렇지 않은 경우
, 당신이 원하는 것 : 조금 더 효율적인 backreferenceless 그룹화를 사용합니다
^[a-zA-Z0-9]{6}(?:-[a-zA-Z0-9]{1,4})?$
합니다.
마지막으로 한 가지. 이 솔루션은 111111-
과 일치하지 않지만 11111-A
과 일치합니다.이와 함께 이동 111111A
일치하지 당신이 111111-
에 맞게 좋아하지만 할 경우도 는 않습니다
^[a-zA-Z0-9]{6}(?:-[a-zA-Z0-9]{0,4})?$
편집 : Tanascius '솔루션은 더 이상 \w
를 사용하지 않기 때문에 관련된 위 말했다 무슨 무시 이.
당신은 "상반기에 정확히 6 자"라고 말했지만 나중에는 "yyyyy-989"가 유효하다고 말했습니다. 나는 뭔가를 놓치고 있는가? 아니면이 모순 적인가? – Ken
정규 표현식에 대해 질문 할 때 대상 언어/시스템을 나타내는 것이 좋습니다. Perl의 RE 엔진은 JavaScript 1과 다르며 Java 1과는 다릅니다. 편집기 (또는 grep과 같은 도구)의 지원도 크게 다를 수 있습니다. Charles Stewart가 PCRE 태그를 추가했지만 원하는/필요로하는 것이 확실하지 않습니다. – PhiLho