2012-09-24 1 views
1

예를 들어 전화 번호가 포함 된 문자열의 유효성을 검사하여 '+'다음에 2 자리 숫자를 입력 한 다음 숫자 또는 하이픈 또는 공백 하나의 숫자를 입력합니다. 문자열은 숫자로 끝나야합니다.XSD 스키마에서 정규식을 사용하여 특정 문자가 문자열에서 반복되는 것을 제한하려면 어떻게합니까?

<xs:pattern value="\+\d{2}[- ]?[\d -]+[\d]"/> 

을하지만이 캐릭터 라인 내에서 공백이나 하이픈의 반복을 제한하지 않습니다

내가 현재 가지고. 어떻게이 일을 성취 할 수 있습니까?

답변

2

"... 다음 숫자 또는 하이픈 또는 공백 중 하나의 단일 인스턴스의 시퀀스"- 말 그대로 받아 들여 다음을 모두 수용 할 수 있음을 나타냅니다 (끝나는 문자열을 인용합니다). 공백) :

"+01 " 
+01- 
+4312345678912345678900 

이 코드를 보면, 난 당신이 비공식적으로 말하기되었고, 당신이 원하는하는 것은 더 플러스, 두 자리하고 최대 한에 의해 중단 숫자의 순서로 설명 될 수 있다고 생각 하이픈 또는 공백으로 끝나서는 안됩니다. 그 정확한 의역이 있다면 하나 하이픈 한 공간까지까지 허용 할 경우

\+\d{2}\d*[- ]?\d+ 

을 시도 할 수 있습니다, 그것은 훨씬 더 복잡해진다,하지만 여전히 표현할 수있다. 당신을 가정하면 자리의 빈 순서가 허용되고 싶지 않아 :

\+\d{2}(\d+|(\d*(-\d+| \d+)?)) 

[테스트하지 않습니다.] 당신의 도움을 위해

+0

감사합니다. 나는 나의 질문이 다소 불투명하다는 것에 동의한다. 0 개 이상의 공백과 하이픈을 허용하고 싶지만 연속적으로 나타나서는 안되며 마지막 문자도 될 수 없습니다. +12 456-43 4677이 유효해야합니다. –

+1

아, 알겠습니다. 하이픈, 스페이스 또는 숫자의 시퀀스. 스페이스와 숫자는 연속적이지 않고 최종이 아닙니다. '\ + \ d {2} \ d * ([-] \ d +) *'는 당신이 원하는 것을 할 수 있습니다. –

+0

완벽한 - 감사합니다. –

관련 문제