2013-09-20 3 views
1

Мне нужна помощь для небольшой задачи. У меня есть файл конфигурации, где я должен получить указанный код HEX цвет:jQuery - Захват строк цвета HEX

; List of colors to use for 
; the cards in the game 
; Colour Memory 

#3be6c4  
#e6e03b 
#6f3be6 ; This purple shade could be nicer... 
#4fe63b 
#e63b3b 
#ff5a00 
#ff00de 
#3b8fe6 

На мой код JQuery, я знаю, как читать данные из файла, но то, что мне сейчас нужно брать только HEX коды (вырезание пустых строк и комментариев) и поместить каждый в массив. Это регулярное выражение вопрос, который я думаю, но я вроде укомплектованный: D

Большое спасибо

+0

' '# abcedef'.match (/^(# [a-z0-9] {6}) /) [0] '->" #abcede " – Brian

+1

@Brian,'/# [a-f0-9] {6}/i' соответствует hex, 'az' безусловно, неверно. – zzzzBov

ответ

0

Здесь вы идете: http://jsfiddle.net/ECuux/1/

использует это регулярное выражение: /\b[0-9A-F]{6}\b/gi

основной код я использовал:

var configFile; // Ваш файл в виде строки

configFile.match (/ \ б и [0-9A-F] {6} \ б/ГИ)

+0

Отлично, он работает как шарм. Спасибо :) –

+0

Я только что отредактировал ваше регулярное выражение, добавив символ «#», например/# \ b [0-9A-F] {6} \ b/gi –

2

/#[0-9a-f]{6}/ig использовать в качестве регулярного выражения, нет необходимости в JQuery, как все это может быть легко сделано без библиотеки.

var data = "your file data here"; 
hexcodes = data.match(/#[0-9a-f]{6}/ig); 

hexcodes будет содержать

[ 
    "#3be6c4", 
    "#e6e03b", 
    "#6f3be6", 
    "#4fe63b", 
    "#e63b3b", 
    "#ff5a00", 
    "#ff00de", 
    "#3b8fe6" 
] 
+0

'#' принадлежит внутри символов '/'. – zzzzBov

+0

Да опечатка исправлена. –

+0

Кажется, что это не работает с этим регулярным выражением. Он делает это с этим:/\ b [0-9A-F] {6} \ b/gi –

1

Это может быть сделано без регулярных выражений, а также.
Получить содержимое строки файла, разделить на переводы строк и отображать значения, добавив пустую строку для чего-либо, что не начинается с #, а затем отфильтровать пустышки:

var arr = 'string with hex codes'.split('\n'); 

var hex = $.map(arr, function(color) { 
    return $.trim(color).indexOf('#') === 0 ? $.trim(color).slice(0,7) : ''; 
}).filter(function(n) { return $.trim(n).length; }); 

FIDDLE

Смежные вопросы