2014-09-11 89 views
1

我需要更換隨機字符串下劃線後,這裏是我的代碼從字符串替換隨機數與正則表達式

var map_list_tmpl_pre = '<div>some odd</div><ul><li class="single_map_list" onClick="showlist(\'parent_id_3aXw\')"></li> 
    <li class="single_map_list" onClick="showlist(\'parent_id_3aXw\')"></li> 
    </ul>'; 

$(map_list_tmpl_pre).filter('.single_map_list').each(function(index, currentLink) { 
    alert(currentLink.outerHTML.replace(/(parent_id_)[0-9][a-z][A-Z]/, 'parent_id_newID')); 
}); 

回答

2

變化[0-9][a-z][A-Z][0-9a-zA-Z]+

[0-9][a-z][A-Z]將意味着後面跟着一個小寫字母后跟一個數字一個大寫字母,例如這將匹配:

5aA

但這並不:

5Aa

所以使用當前的例子,它會在parent_id_3aXw匹配字符串parent_id_3aX,並更換它,所以它結束了是parent_id_newIDw

使用[0-9a-zA-Z]+意味着一個或多個模式匹配(以+。它可以是0-9和a-z和A-Z範圍內的任何字符,順序無關緊要。

或者,而不必指定小寫和大寫的範圍,你可以簡單地添加i標誌,使其不區分大小寫:

replace(/(parent_id_)[0-9A-Z]+/i

而且你不應該需要包裝parent_id_在括號,除非你想以後用引用引用它。這也應該工作:

replace(/parent_id_[0-9A-Z]+/i

+0

偉大的工作像魅力:)謝謝鄧肯 – Max 2014-09-11 12:44:12