2011-04-25 41 views
0

我一直在嘗試使用jQuery的匹配()函數,但我沒能得到任何我嘗試的工作......jQuery的 - 模式匹配

基本上,我想匹配任何括號中的字符串:

(樣品) (口袋妖怪) (su54gar99)

...等

想這(最新的嘗試...不知道我有多少經歷過在這一點上......)

$('.acf').each(function() { 
       var ac = $(this); 
       ac.data('changed', false); 
       ac.data('alias', 'ac-real-'); 
       ac.data('rx', /\s*\(\s+\)\s*/i); 
       ac.data('name', ac.attr('name')); 
       ac.data('id', ac.attr('id')); 
       ac.data('value', ac.val()); 
     }); 

回答

2

爲什麼使用\s?它匹配任何空白字符

使用正則表達式象下面這樣:

\(.+\) 
+0

謝謝,我發現像我發佈後1分鐘......但謝謝! – 2011-04-25 15:51:56

+0

當有更精確的表達式時(例如'[^()]'),不要使用點。如果有多組圓括號,則表達式'\(。+ \)'失敗。請注意,如果括號嵌套,lazy dot版本:'\(。+?\)'也會失敗。使用:\([^()] * \)'只安全匹配最內層的括號。 – ridgerunner 2011-04-25 16:15:46

+0

這只是一個建議,以糾正錯誤。無論如何,感謝您的意見。 – manojlds 2011-04-25 16:18:35

1

我建議你的錯是,「\ S」僅代表空白字符,而不是普通字符)。

其次,爲了找到EACH而不是在1結果後停止,添加「g」(用於全局)修飾符。

嘗試是這樣的:

var text = "(sample) (pokemon) (su54gar99)"; 
var found = text.match(/\s*\(([a-z,0-9]*)\)/ig); 
$.each(found, function(i, v) { 
    alert(i+" = "+v); 
}); 

作品至少給定的例子)。

提示:訪問:http://www.w3schools.com/jsref/jsref_obj_regexp.asp 學習RegEx的最佳方式,在我看來:P。

+0

詛咒,打我。 '/^\(。| \ d *?\)$ /'< - 任何下降? – mattsven 2011-04-25 16:04:09