2010-01-28 35 views
13

Greetings JavaScript và rất kinh nghiệm biểu thức chính quy,JavaScript biểu thức thông thường - phù hợp với một loạt các số thập lục phân

Tôi muốn trả lại tất cả các trận đấu trong một chuỗi đầu vào có 6 chữ số số thập lục phân với bất kỳ số lượng khoảng trắng ở giữa. Ví dụ, "333333 e1e1e1 f4f435" phải trả lại một mảng:

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

Đây là những gì tôi có, nhưng nó không phải là khá right-- Tôi không rõ ràng như thế nào để có được những khoảng trắng không bắt buộc trong đó, và tôi chỉ nhận được một trận đấu.

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

Nhờ sự giúp đỡ của bạn,

-NorthK

Trả lời

19

Sử dụng g cờ để phù hợp với toàn cầu:

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

Một sự cải tiến tốt sẽ được thêm ranh giới từ:

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

Nếu bạn thích bạn cũng có thể thiết lập các cờ i đối với trường hợp hợp nhạy cảm:

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

Mặc dù, điều này cho phép _any_ ký tự giữa các số, không chỉ khoảng trắng. – bdukes

+0

Cảm ơn Gumbo, đã làm được điều đó! – northk

+0

Hmmm, tôi cho rằng bất kỳ ký tự nào giữa các kết quả trùng khớp đều OK trong trường hợp này; cảm ơn bdukes. – northk

2

thử:

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

Lưu ý g cờ để toàn cầu phù hợp.

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

cung cấp cho bạn một mảng tất cả các số thập lục phân 6 chữ số trong chuỗi đã cho subject.

Các ranh giới từ \b là cần thiết để tránh khớp các phần của số thập lục phân dài hơn.

+0

Ahh, tốt điểm Tim, cảm ơn. – northk

2

Tùy thuộc vào tình huống, nhưng tôi thường là muốn đảm bảo mã của tôi không thể âm thầm chấp nhận (và bỏ qua hoặc giải thích sai) đầu vào không chính xác. Vì vậy, tôi thường sẽ làm một cái gì đó như thế này.

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

Cảm ơn Jason. trong trường hợp này, tôi nghĩ rằng đó là OK vì người dùng sẽ ngay lập tức nhìn thấy kết quả đồ họa của những gì họ gõ vào nếu họ gõ vào thùng rác :) – northk

Các vấn đề liên quan