2010-01-28 7 views
13

인사 자바 스크립트와 정규 표현식 전문가의 일련의, 나는 그 사이에 공백의 금액 6 자리 16 진수 숫자 입력 문자열에서 일치하는 항목을 모두 반환 할자바 스크립트 정규 표현식 - 16 진수

일치합니다. ,

여기
array[0] = 333333 
array[1] = e1e1e1 
array[2] = f4f435 

내가 가지고있는,하지만 그것은 아주 right-- 내가 거기에 옵션 공백을하는 방법을 명확하지 않다되지 않습니다 예를 들어, "333333 e1e1e1 f4f435는"배열을 반환한다 그리고 나는 오직 한 경기 만 얻는다.

colorValuesArray = colorValues.match (/ [0-9A-Fa-f] {6} /); 당신의 도움에 대한

감사합니다,

-NorthK

답변

19

사용 g 플래그 전 세계적으로 일치 :

/[0-9A-Fa-f]{6}/g 

또 다른 좋은 향상이 추가 될 단어 경계 :

/\b[0-9A-Fa-f]{6}\b/g 

당신은 또한 대소 문자를 구분 일치를위한 내가 플래그를 설정할 수 좋아하는 경우 :

/\b[0-9A-F]{6}\b/gi 
+0

공백이 아닌 숫자 사이에 _any_ 문자가 허용됩니다. – bdukes

+0

Gumbo 덕분에, 그 트릭을 했어! – northk

+0

흠, 나는 일치하는 사이에 어떤 문자라도 허용하는 것이이 경우에는 괜찮다고 생각한다; 고마워. – northk

2

시도 :

colorValues.match(/[0-9A-Fa-f]{6}/g); 

주 일치 세계적하는 g 플래그.

0
result = subject.match(/\b[0-9A-Fa-f]{6}\b/g); 

은 주어진 문자열의 모든 6 자리 16 진수 숫자 배열 subject을 제공합니다.

\b 단어 경계는 더 긴 16 진수의 일치하는 부분을 피하기 위해 필요합니다.

+0

아, 좋은 지적이다. 팀, 고마워. – northk

2

상황에 따라 다르지만 보통 입니다. 내 코드가 잘못된 입력을 자동으로 수락 (및 무시 또는 오인) 할 수 없도록하고 싶습니다. 그래서 나는 보통 이런 식으로 할 것입니다.

var arr = s.split(); 
for (var i = 0; i < arr.length; i++) { 
    if (!arr[i].match(/^[0-9A-Fa-f]{6}$/) 
     throw new Error("unexpected junk in string: " + arr[i]); 
    arr[i] = parseInt(arr[i], 16); 
} 
+0

고맙습니다 Jason. 이 경우 사용자가 가비지를 입력하면 입력 한 내용을 그래픽으로 볼 수 있기 때문에 OK라고 생각합니다. :) – northk