문자열이 2 ~ 3 자일 수있는 정규 표현식을 작성하고 있습니다. 첫 번째 문자는 A와 H 사이의 알파벳이어야합니다 (대문자). 이 문자는 내가일치하는 문자 다음에 특정 숫자 범위
[A-H]{1}[1-12]{1,2}
내가 A12
을 키 입력 할 때하지만 난
A6
제안하십시오 키 입력하지 않을 경우이 괜찮 쓴 1 ~ 12의 숫자 다음에해야합니다. 이 문자의 범위로 구현되어 있기 때문에
문자열이 2 ~ 3 자일 수있는 정규 표현식을 작성하고 있습니다. 첫 번째 문자는 A와 H 사이의 알파벳이어야합니다 (대문자). 이 문자는 내가일치하는 문자 다음에 특정 숫자 범위
[A-H]{1}[1-12]{1,2}
내가 A12
을 키 입력 할 때하지만 난
A6
제안하십시오 키 입력하지 않을 경우이 괜찮 쓴 1 ~ 12의 숫자 다음에해야합니다. 이 문자의 범위로 구현되어 있기 때문에
만 중 하나 1
또는 2
일치하는 것이다, 그래서 [1-12]
[12]
에 해당, 같은 숫자의 범위를 지정할 수 없습니다. 대신, 다음을 시도해보십시오 : 원래 정규식에 [A-H]
후 {1}
이 불필요하다고
[A-H] # one letter from A to H
(?: # start non-capturing group
1[012] # 1 followed by 0, 1, or 2 (10, 11, 12)
| # OR
[1-9] # one digit from 1 to 9
) # end non-capturing group
주, [A-H]{1}
및 [A-H]
은 동일합니다 : 여기
[A-H](?:1[012]|[1-9])
는 설명이다.
정규식에 앵커를 추가하는 것이 좋을 수도 있습니다. 그렇지 않으면 A20
과 같은 문자열에서도 부분 일치가 발생합니다. 그것은 더 큰 텍스트 내에있는 경우 대신 단어 경계를 사용할 수
\A[A-H](?:1[012]|[1-9])\z
: 당신이 전체 문자열과 일치하려고하는 경우에 당신은 다음을 사용한다
여기\b[A-H](?:1[012]|[1-9])\b
감사합니다. A12는이 경우 부분 일치입니다. A1 만 일치합니다. http://rubular.com/r/EQmL27ZTAH – Ank
@Ankur - 방금 교대 명령이 바뀌 었으니 지금 올바르게 작동해야합니다. 정규식에 앵커를 추가하는 것을 고려할 수도 있습니다. 그렇지 않으면'A20'과 같은 문자열에서도 부분 일치를 얻을 수 있습니다. 전체 문자열과 일치 시키려고한다면'\ A [AH] (?: 1 [012] | [1-9]) \ z'를 사용하거나 더 큰 텍스트 단어 안에 있으면 경계가 도움이 될 수 있습니다 : '\ b [AH] (?: 1 [012] | [1-9]) \ b' –
고마워. – Ank