2016-08-18 3 views
1

C# Regex 객체에로드 된 정규식 패턴에서 허용되는 문자열의 최대 길이를 추출 할 수 있습니까?Regex 객체에서 허용되는 문자열 길이의 최대 길이

@"^[A-Z0-9]{0,20}$"으로 정의 된 정규식 문자열이있는 경우 최대 허용 길이 인 20을 얻기 위해 문자열 조작을 사용할 수 있습니다.

var r = new Regex(@"^[A-Z0-9]{0,20}$"); 
// var max = r.MaxLength; 

몇 가지 상황을 설정하려면 업데이트, 내가 Asp.Net이

:

그러나 다음과 같이 나는 Regex 객체를 통해 예를 들어, 더 쉽게 것을 얻을 수있는 방법이있다 MVC 5 응용 프로그램에서는 RegexValidationAttribute을 사용하여 뷰 모델의 입력을 검증합니다.

내가 뭘하고 싶은건 정규식 문자열에서 파싱 된 문자열의 최대 허용 길이를 포함하는 사용자 지정 메타 데이터 속성을 추가 할 수 있도록 해당 특성을 재정의하는 것입니다. 내 문자열 편집기 템플릿에서 사용자 지정 메타 데이터 값을 가져온 다음 태그에 maxlength="" 특성을 추가합니다. 이제는 StringLengthAttribute을 추가하고 그런 식으로 처리 할 수 ​​있다는 것을 알았지 만 정규 표현식 길이와 문자열 길이를 동기화 상태로 유지해야한다는 것을 기억해야합니다. 또한 1000 개 이상의 모델을 통해 필요한 노력을 중복 제거하고 싶습니다.

+0

다른 정규 표현식을 사용하여 이전 구문을 구문 분석하십시오. – revo

+0

예제를 제공해 줄 수 있습니까? – Nick

+0

내가 알고있는 속성이 없습니다. 문자열의 길이를 읽을 수있는 위치가 있으며, 구현되지 않은 것으로 추측됩니다. 당신이 할 수있는 일은 주어진 문자열이 맞는지 확인하고, 일치하는 문자가 있다면 그 문자열과 일치시켜야합니다. 문제는 당신이 정규식 패턴에서 원하는만큼 많은 글자 수 제한을 가질 수 있기 때문에 하나의 실제 한도가 아니라는 것입니다. revo는 20 개의 정규 표현식을 다른 정규 표현식으로 구문 분석합니다. – prizm1

답변

0

C# Regex 개체에로드 된 정규식 패턴에서 허용되는 문자열의 최대 길이를 추출 할 수 있습니까?

No. Regex class에는 작업을 수행하는 기본 제공 필드/메소드가 없습니다.

일치의 이론적 인 최대 길이, 그것은 당신이 언급 한 같은 간단한 정규 표현식에 대한 작동합니다하지만 곧 여러 대안 및/또는 길이 정량을 표시됩니다으로 계산하려고 할 방법을 쓸 수 (+/*) 이론적 인 최대 길이의 계산은 악몽 일 것입니다.

관련 문제