2012-08-10 67 views
0

我有這樣的腳本來處理表單並預覽背景變化:獲取方括號中的字符串與JavaScript/jQuery的

if(!options) { 
     var optionsTemp = $manageBackgroundForm.serializeArray(); 

     var regex =/\bg[[a-z]+\]/; 
     $.each(optionsTemp, function(index, options) { 
      var test = options.name.match(regex); 
      debug(test[0]); // DONT WORK 

     }); 

     var options = new Object(); 
     options.color = 'red'; 
     options.image = 'test.png'; 
     options.position = '20px 20x'; 
     options.attachment = 'fixed'; 
     options.repeat = 'repeat-x'; 
     options.size = 'cover'; 
    } 

    $('body').css({ 
     'background-color': options.color, 
     'background-image': 'url('+options.image+')', 
     'background-position': options.position, 
     'background-attachment': options.attachment, 
     'background-repeat': options.repeat, 
     'background-size': options.size //contain 
    }); 

我的輸入是輸入一樣NAME =「BG [顏色]」。我這樣使用它來輕鬆處理PHP中的表單。但我有問題在JavaScript中處理它。我想從我的表單中獲得所有BG選項(並且只有bg選項) - 我還有其他輸入,例如val [示例]。

我想映射輸入與選項。任何想法?

+0

你是不是正確地逃避正則表達式試試這個:'/ \ bg \ [\ w + \] /' – elclanrs 2012-08-10 10:32:28

+0

如果你知道名稱中總是有方括號,那麼這將得到它們中的字符串。 ..'var test = options.name.split(「[」)[1] .split(「]」)[0]' – Archer 2012-08-10 10:32:53

回答

3

這是你的正則表達式的解釋:

NODE      EXPLANATION 
---------------------------------------------------------------------- 
(?-imsx:     group, but do not capture (case-sensitive) 
         (with^and $ matching normally) (with . not 
         matching \n) (matching whitespace and # 
         normally): 
---------------------------------------------------------------------- 
    \b      the boundary between a word char (\w) and 
          something that is not a word char 
---------------------------------------------------------------------- 
    g      'g' 
---------------------------------------------------------------------- 
    [[a-z]+     any character of: '[', 'a' to 'z' (1 or 
          more times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    \]      ']' 
---------------------------------------------------------------------- 
)      end of grouping 

我敢肯定這是不是你想要的。

試試這個來代替:

/\bbg\[[a-z]+\]/ 

注意b字邊界之後。

+0

您是否使用過任何特殊軟件來生成此解釋文本?我真的可以用它來減少我在正則表達式的同學們的不快感:) – OcuS 2012-08-10 12:42:59

+1

@OcuS:這是一個perl模塊,可在http://search.cpan.org/~gsullivan/YAPE-Regex-Explain- 4.01/Explain.pm – Toto 2012-08-10 14:08:57

+0

你完全正確,謝謝..我忘了b – 2012-08-11 08:18:14