2011-11-02 2 views
0

이 알파벳 (숫자 없음)으로 시작하는 문자열에 대한 정규 표현식이 필요합니다. 최대 길이 8 특수 문자 또는 공백이 없습니다. 문자열은 시작 문자를 제외하고 숫자 또는 _를 가질 수 있습니다.문자열에 정규 표현식이 필요합니다

+3

아직 시도한 것이 있습니까? 코드 표시 : – Snicksie

답변

2

이 작동 것이다 : 예를 들어

/^[a-z][a-z0-9_]{0,7}$/i 

,

/^[a-z][a-z0-9_]{0,7}$/i.test('a1234567'); // true 
/^[a-z][a-z0-9_]{0,7}$/i.test(''); // false 
+0

대단히 감사합니다. – user428747

+0

아래와 같이 :'[a-z] {1}'은 불필요합니다. 또한, 테스트가 잘못되어'{1,} '이 무한한 문자와 일치하기 때문에 어떤 수의 선행 문자와도 일치합니다. 예를 들어, 테스트 된대로'/^[az] {1,} [a-z0-9 _] {0,7} $/i.test ("aaaa0909090"); // true'는 원하는 것이 아닙니다. 문자열은 11 자 길이입니다 (지정된 8 개가 아님). – Jesse

+0

@Jesse, 감사합니다. 고정 된 – Joe

1

이 밖으로 시도 :

/^[A-Za-z]{1}[a-zA-Z0-9_]{0,7}$/ 
+3

'{1}'은 중복됩니다. 항상 기본값은 1입니다. – poke

+0

문자열에 최소 2 자 이상이 필요합니다. 'a'와 일치하지 않습니다. –

+0

@JonathanM 나는 그것을 고쳤다. – Neal

1

이것보십시오 :

/^[a-zA-Z][0-9a-zA-Z_]{0,7}$/ 

알파 시작 문자가 필요하며 영숫자 또는 밑줄 문자를 최대 7 자까지 추가 입력 할 수 있습니다 (선택 사항).

편집 : 감사합니다. 제시를 수정합니다.

2

\w 약식은 모든 문자, 숫자 및 밑줄입니다. [A-Za-z]은 잔인합니다. /i 플래그는 모든 문자를 입력하며 대소 문자를 구별합니다.

따라서, 당신이 필요위한 슈퍼 간단한 정규식은 다음과 같습니다

/^[a-z]\w{0,7}$/i

/^[a-z]\w{0,7}$/i.test("a1234567"); 
> true 
/^[a-z]\w{0,7}$/i.test("a12345697"); 
> false 
/^[a-z]\w{0,7}$/i.test(""); 
> false 
+0

Jonathan M의'[az]'는 대문자와 일치하지 않을 것이다. Neal의'[a-zA-z]'는 대문자와 일치하지 않을 것이다. IAbstractDownVoteFactor의'[az] {1}'은 중복되고'[az]'는 항상 하나의 문자와 일치 할 것이고 {1}은 항상 불필요합니다. regexes를 간단하고 읽기 쉬운 유지하십시오! – Jesse

+0

+1,'\ w'로 전화하세요. –

+0

숫자가 포함되어 있기 때문에 잘못되었습니다 ... – FailedDev

0

그리고 lookaheads :

if (subject.match(/^(?=[a-z]\w{0,7}$)/i)) { 
    // Successful match 
} 

설명과 다른 버전 :

"^" +   // Assert position at the beginning of the string 
"(?=" +   // Assert that the regex below can be matched, starting at this position (positive lookahead) 
    "[a-z]" +  // Match a single character in the range between “a” and “z” 
    "\\w" +   // Match a single character that is a “word character” (letters, digits, etc.) 
     "{0,7}" +  // Between zero and 7 times, as many times as possible, giving back as needed (greedy) 
    "$" +   // Assert position at the end of the string (or before the line break at the end of the string, if any) 
")" 
+0

다양성과 독창성을위한 Upvote, 복잡성과 가독성을위한 downvote. 매우 흥미있다. :) –

관련 문제