2010-12-13 2 views
1

패턴과 일치하는 최소 하나의 숫자가 있어야하고 최소 크기는 8자를 포함해야합니다. g 번호. 가능한 경우 정규식을 설명하십시오.정규 표현식은 기본적으로 <br></p> </blockquote> <p></strong> 내 표현 abcdefg1</strong><br> <strong>1abcdefg</strong><br> <strong>을 abc1abcd</p> <blockquote> <p><strong>패턴을 다음과 일치 할 수있는 내가 C#을위한 정규 표현식이 필요

+0

찔러 보셨습니까? – razlebe

+0

나는 그 (것)들을 분류하고 비교하는 것이 좋습니다 –

답변

2

정규 표현식 패턴은해야 ... 그냥 길이 예를

string.Length > 7 

을 확인하고 있는지가이 정규식 일치하는 항목을 찾을 수 있도록 : \d+ (경기 1 개 이상의 숫자). 귀하의 예를 들어, 당신이 걱정하는 모든 이후 최소 길이 정규식을 사용하여 결정하지 아마 최선의 방법은 적어도 1 번호가 적어도 8자를 초과

Regex regEx = new Regex(@"\d+"); 
isValid = regEx.Match(myString).Success && myString.Length >= 8; 

패턴 \d 그냥 [0-9]과 동일하다는 것이다 +at least one of을 의미합니다. 문자열 앞의 @ 기호는 무엇 때문에 \d을 벗어나려고합니다.

의견에서 El Ronnoco가 언급했듯이 \d은 귀하의 요구 사항과 일치합니다. \d+에 대해 아는 것은 일부 문자열 사이에 몇 개의 숫자를 넣고 싶은 더 복잡한 패턴에 유용합니다.

: 아직 알지 못했던 내용을 읽었습니다. \d[0-9] 이상의 많은 문자 인 Unicode number, decimal digit의 문자와 일치합니다. 당신이 단지 어떤 숫자를 원한다면 알고 있어야 할 것. 그렇지 않으면 패턴에 대한 [0-9]의 El Ronnoco의 대답이면 충분합니다.

+0

+1 좋은 설명. OP의 요구 사항에는 "\ d"로 충분할 것이라고 생각합니까? –

+0

고마워 - 내 대답을 업데이트했고 모든 유니 코드 번호와 일치하는'\ d'에 대해 알지 못했던 비트를 추가했습니다 –

3

두 문장으로 확인해 보겠습니다.

[0-9] 
3

당신은 길이를 확인하기 위해 look-ahead assertion를 사용하고, 따라서 숫자에 앞으로 검색 :

(?=.{8}).*[0-9] 

우리는 예견을 8 개 문자, 그 성공하면, 우리는 실제로 시도 일치하는 "무엇이든 뒤에 숫자가옵니다."

하지만 실제로는하지 마세요. 명시 적으로 길이를 확인하십시오. 훨씬 더 명확 해.

+0

+1 미리보기를 사용하는 다른 방법에 대해서는 훨씬 명확하다). –

+0

+1 영리합니다. 나는 당신이 그와 같은 lookahead를 사용할 수 있다는 것을 정말로 알지 못했지만 그것이 합리적이라고 생각한다. –

+0

Regexes는 측면 사상가를위한 것으로되어 있습니까? 그래서 첫 번째 문제를 해결하기 위해 하나를 사용할 것이라고 생각할 때 두 가지 문제로 끝나는 것입니다. ;) –