17자를 포함하고 필수 숫자와 문자가 있어야하며 I, O, Q, Ñ 문자를 포함하지 않아야하는 일반 표현식을 만들려고합니다. 현재 나는 다음을 가지고 있습니다 :문자와 숫자의 유효성을 검사하는 정규식이 예상대로 작동하지 않습니다.
그러나 숫자 만 입력하거나 문자 만 입력하면 정규 표현식이이를 유효성으로 검사합니다.
17자를 포함하고 필수 숫자와 문자가 있어야하며 I, O, Q, Ñ 문자를 포함하지 않아야하는 일반 표현식을 만들려고합니다. 현재 나는 다음을 가지고 있습니다 :문자와 숫자의 유효성을 검사하는 정규식이 예상대로 작동하지 않습니다.
그러나 숫자 만 입력하거나 문자 만 입력하면 정규 표현식이이를 유효성으로 검사합니다.
일반적으로 입력이 추가 조건을 충족시키는 것을 확인하기 위해 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)
$
를 사용하여 긍정적이고 부정적인 모습 이것은 미리 :
/^(?=.*[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
참고 : 문자가 필요한 미리보기는 허용되지 않는 문자로도 충족되지만 문자를 허용하지 않는 미리보기는 여전히 문자를 허용하지 않습니다. 그렇게하면 표현을 더 간단하게 만들 수 있습니다.
좋아요! 나는 단지 반 길을 갔다. .. :) – Jon
설명에서 분명하지 않지만 기존 정규 표현식에있는 모든 문자에 숫자를 더하고 나머지 문자와 숫자는 모두 입력해야한다고 말하고 있습니까? – JohnJ
그게 내가 어떻게 읽었는지 –
JohnJ, 더하기 숫자를 사용할 수 있습니다 – jal