2013-11-21 6 views
2

(64 기수에 대한)이 정규식 :정규식이 일치하도록 더 많은 가능성 (자바 스크립트)

/[a-zA-Z0-9/+]{5}/g 

문자열의 모든 5 개 문자를 일치합니다. 내가 가진 그래서 경우 :

"19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAw" 
일치하는

은 다음과 같습니다

  1. 19jZ2
  2. uLj5O
  3. Xm5 + J
  4. p6vLz
  5. 9PX29
  6. /J5 + v
  7. /aAAw

가 어떻게 다음 경기에서 초래 정규식을 작성합니다 ?

  1. 19jZ2
  2. 9jZ2u
  3. jZ2uL
  4. Z2uLj
  5. 2uLj5
  6. uLj5O
  7. 등등 ...

(^ 문자열의 문자 그대로 모든 가능한 5 개 연속 된 문자)

+4

당신은 정말 정규식을 찾고 아니지만 간단한 루프 -> http://jsfiddle.net/Fg9mG/ – adeneo

+0

그건 좋은 생각이다. 내가 만든 한 가지 변화는 5 문자 미만인 여분의 것들을 잘라 내기 위해 "i EmmaGamma

+1

정규 표현식도 쉼표와 일치한다는 점에 유의하십시오. – Toto

답변

1

:

var result = [], 
    s = '19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAw'; 
while (s.length > 4) { 
    result.push(s.substr(0, 5)); 
    s = s.substr(1); 
} 
3

이 방법에 대해 :

"19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAw".split('').map(function(elm, i, arr) { 
    return arr.slice(i,i+5).join('') } 
).slice(0,-4) 
-3

간단한 ([a-zA-Z0-9+\/]{5})이 특정 입력

Live DEMO

을 위해 그것을 할 수

또는 (?:"|\G(?<!^))([a-zA-Z0-9+\/]{5}|[a-zA-Z0-9+\/]+)(?=.*?") 문자열이 betwee 인 경우

function split(s) { 
    var allowed = /^[a-z\d/+]{5}/i, 
     result = [], 
     match; 
    while (s.length > 4) { 
     match = s.match(allowed); 
     match && result.push(match[0]); 
     s = s.substr(1); // removes first char 
    } 
    return result; 
} 

정규식이 첫 번째 찾습니다 : 당신의 캐릭터 수가 5

다음

Live DEMO

+0

공백이 아닌 문자를 찾고 있지 않습니다. 나는 원래의 게시물에서 언급했듯이 [a-z, A-Z, 0-9, +, /] 인 base64의 모든 문자를 사용하고 있습니다. – EmmaGamma

+0

@ user1868084라면'\ S'를'[a-zA-Z0-9 + \ /]'...로 대체하면됩니다. – Enissay

0

정확히 배수가 제안되는 경우, n은

Live DEMO

또는 (?:"|\G(?<!^))([a-zA-Z0-9+\/]{5})(?=(?:[a-zA-Z0-9+\/]{5})*")를 인용 각 루프 당 5 개의 문자 :

adeneo의 의견을 바탕으로
split('19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAw'); // ['19jZ2', '9jZ2u', ...] 
split('19jZ2=uLj5OXm5+jp6vLz9PX29/j5+v/aAAw'); // ['19jZ2', 'uLj5O', ...] 
관련 문제