2012-09-14 2 views
1

정규식을 만들어 6-12자를 확인하려고합니다. 하나는 숫자이고 나머지는 임의의 문자이며 공백이 없습니다. Regex가 이것을 할 수 있습니까? 나는 객관적으로 이것을하려고 노력하고있다. 그리고 나는 전혀 Regex에 익숙하지 않다. 필자는 튜토리얼을 몇 권 읽었지 만 대부분은 간단한 숫자의 경우 또는 숫자의 집합과 일치하는 것이지만 정확히 무엇을 찾고있는 것은 아닙니다. 나는 방법으로 그것을 할 수 있지만, 너무 느리고 나는 새로운 것을 배우려고 할 수 있다고 생각했다.문자, 숫자, 공백없는 정규식

asdfg1 == ok 
asdfg 1 != ok 
asdfgh != ok 
123456 != ok 
asdfasgdasgdasdfasdf != ok 
+0

숫자가 끝나야합니까? 또는 문자열의 어느 위치에있을 수 있습니까? "어떤 문자"라고 말하면 문자 또는 숫자/기호를 의미합니까? –

+0

@ Snowsickle 어디든지 올 수 있습니다. – Crystal

+0

제목이 "자릿수"이고 질문에 "한 자릿수"가 표시되는 이유는 무엇입니까? "모든 캐릭터"가 정확히 무엇을 의미합니까? 숫자가 포함되어 있습니까? 구두? –

답변

0

입니다 , 권리? 그리고 burn_LEGION 덕분에 하나의 숫자 만있을 수 있습니까?

^    # Start of string 
(?=\D*\d\D*$) # Assert that there is exactly one digit in the string 
[^\W_]  # Match a letter or digit (explanation below) 
{6,12}  # 6-12 times 
$    # End of string 

[^\W_] 조금 이상한 것처럼 보일 수있다 :이 경우

^(?=\D*\d\D*$)[^\W_]{6,12}$ 

설명을 사용합니다. 어떻게 작동합니까? 음, \w은 모든 문자, 숫자 또는 밑줄과 일치합니다. \W\w과 일치하지 않는 항목과 일치합니다. 따라서 [^\W] ("영숫자/밑줄이 아닌 문자와 일치"를 의미)은 기본적으로 \w과 같지만이 문자 클래스에 _을 추가하면 허용되는 문자 목록에서 밑줄을 제거 할 수 있습니다.

+0

정규식이 잘못되었습니다. 123456 –

+0

@burning_LEGION : 네 말이 맞아요, 그 자리 만 알 수는 없어요. 나는 왜 내 대답이 받아 들여 졌는지 궁금하다. 어쨌든 나는 그것을 편집했다. –

+0

@tim 문자없이 6 자리까지 허용하지 않습니까? 123456! = ok http://regexpal.com/ –

1

사용이 정규식 ^(?=.*\d)(?=.*[a-zA-Z])[^ ]{6,12}$

+0

정규 표현식을 사용하면 공백 및 기타 영숫자가 아닌 문자를 사용할 수 있습니다. –

0

내가 생각하지 않았다,하지만 난 여기에 생각은 "문자"를 말할 때 당신이 "편지"를 의미하는 것으로 보인다 대답

(^[^\d\x20]*\d[^\d\x20]*$){6,12} 
0

이것은 한 자릿수입니다 : ^[^\d\x20]{0,11}\d{1}[^\d\x20]{0,11}$하지만 6-12 길이로 제한 될 수는 없지만 다른 함수를 사용하여 길이를 먼저 확인할 수 있습니다. 6에서 12까지 체크하면이 정규식 마녀로 확인합니다.