2013-03-14 1 views
1

17자를 포함하고 필수 숫자와 문자가 있어야하며 I, O, Q, Ñ 문자를 포함하지 않아야하는 일반 표현식을 만들려고합니다. 현재 나는 다음을 가지고 있습니다 :문자와 숫자의 유효성을 검사하는 정규식이 예상대로 작동하지 않습니다.

그러나 숫자 만 입력하거나 문자 만 입력하면 정규 표현식이이를 유효성으로 검사합니다.

+0

설명에서 분명하지 않지만 기존 정규 표현식에있는 모든 문자에 숫자를 더하고 나머지 문자와 숫자는 모두 입력해야한다고 말하고 있습니까? – JohnJ

+0

그게 내가 어떻게 읽었는지 –

+0

JohnJ, 더하기 숫자를 사용할 수 있습니다 – jal

답변

4

일반적으로 입력이 추가 조건을 충족시키는 것을 확인하기 위해 positive lookahead을 사용하려고합니다. 여기에 두 가지 조건이 있으므로 (적어도 하나의 숫자가 포함되어야하며 적어도 하나의 문자가 있어야 함) 두 가지 다른 미리보기로 변환됩니다. 여분의 공백과 가독성에 대한 "의견"정규식은 다음과 같이해야와 함께

:

^ 
(?=.*[a-hj-npr-zA-HJ-NPR-Z].*) // assert the input contains at least one letter 
(?=.*[0-9].*)     // assert the input contains at least one digit 
[a-hj-npr-zA-HJ-NPR-Z0-9]{17} // existing condition (17 allowed chars exactly) 
$ 
3
필요로 문자를 허용하지

를 사용하여 긍정적이고 부정적인 모습 이것은 미리 :

/^(?=.*[0-9])(?=.*[A-Za-z])(?!.*[ioqñIOQÑ])[0-9a-zA-Z]{17}$/.test(s); 

데모 : http://jsfiddle.net/2mNyg/

설명 :

(?=.*[0-9])  - requires a digit 
(?=.*[A-Za-z])  - requires a letter 
(?!.*[ioqñIOQÑ]) - disallows all characters in the set 
[0-9a-zA-Z]{17} - allow basic set and require 17 characters 

참고 : 문자가 필요한 미리보기는 허용되지 않는 문자로도 충족되지만 문자를 허용하지 않는 미리보기는 여전히 문자를 허용하지 않습니다. 그렇게하면 표현을 더 간단하게 만들 수 있습니다.

+0

좋아요! 나는 단지 반 길을 갔다. .. :) – Jon

관련 문제