2012-09-20 2 views
2

기본적으로 10 자 ISBN을 일치 시키려고합니다. 지금까지 10 자 길이의 문자열을 모두 일치시킬 수 있지만 문자열을 식별 할 때 정확하지 않습니다. ISBN9 자리로 시작하고 가능하면 문자열로 끝나는 일치 문자열

길이가 10자인 isbn은 9 개의 시작 자릿수를 가질 수 있으며 문자로 끝나야합니다. 예를 들어 예.

0273737025

027373702X

마지막 문자가 글자 인 경우 항상있을 것입니다 내가 지금까지

[a-zA-Z0-9]{10,10} 

이 정규식 수있을 것입니다 무엇을 X

과 같은 문자열에서 isbn을 추출하십시오. 691,363,210
"asjdh - asd a - dsa- 0273737025" = 0273737025 

뿐만 아니라 이러한 요구 사항을 충족 할 수있는 정규 표현식이 있습니까

"asjdh - asd a - dsa- myveryearly" = myveryearl 

10 개 이상의 문자 긴 그 무엇을 추출 할 것인가?

+0

"string"에는 숫자 및 기타 문자가 포함될 수 있습니다. 대신 "글자"또는 이와 비슷한 것을 지정해야합니다 (예 : "마지막 문자가 문자 인 경우 ..." –

+0

ISBN의 숫자 확인, 여기에 바퀴를 다시 만들 필요가 없습니다 –

+0

@Dagon 질문 : –

답변

3
\d{9}(?:\d|X) 

이것은 9 자리 숫자 다음에 'X'가옵니다.

1

이 작동합니다 :

[0-9]{9}[xX0-9] 

또는 더 간결한 형태 :

\d{9}[xX\d] 
0

당신은 이상의 숫자가 선행 된 9 개 자리를 찾는 방지하기 위해 lookbehind을 사용해야합니다.

(?<!\d)\d{9}[\dxX] 
관련 문제