javascript
  • regex
  • 2012-08-01 45 views 0 likes 
    0

    喜爲下面的JavaScript我想要一個正則表達式將取代左方括號的所有實例\左括號,右括號用\加右括號或用\點JavaScript的簡單的regex

    <script type="text/javascript" type="text/javascript"> 
    
         $(document).ready(function() { 
          var someId = '#Something[0].AnotherSelected[5].Validator'; 
    
          alert(s); 
         }); 
    
        </script> 
    
    句號
    +0

    是這個ID的DOM ID? – 2012-08-01 10:17:17

    +0

    你對你想要的描述不符合你的例子。你不想用雙斜槓替換這些字符,你想用雙斜線來加前綴。 – Barmar 2012-08-01 10:46:10

    +0

    您的權利barmar我已更新問題匹配。我想要一個正則表達式,它將用\\左方括號替換左方括號的所有實例,用\\右方括號替換右方括號或用\\點替換句號 – Somedeveloper 2012-08-01 10:49:23

    回答

    3
    var str = 'something[.something]].something['; 
    console.log(str.replace(/[\[\]\.]/g, '\\\\')); 
    

    輸出

    something\\\\something\\\\\\something\\'; 
    

    [編輯 - 基於下面的OP的評論:

    console.log(str.replace(/[\[\]\.]/g, function($0) { return '\\\\'+$0; })) 
    
    +0

    多數民衆贊成在關閉,但我想保留方括號,但只是把\\在它的前面,所以我想str = #Something \\ [0 \\]。AnotherSelected \\ [5 \\] \\。Validator – Somedeveloper 2012-08-01 10:41:41

    +0

    請參閱編輯....... – Utkanos 2012-08-01 10:48:21

    +0

    多數民衆贊成在夢幻般的。正是我想要的感謝Utkanos – Somedeveloper 2012-08-01 10:50:54

    0
    someId = someId.replace(/\[/g, "\\\\[").replace(/\./g, "\\\\."); 
    
    +1

    這是一個無效的正則表達式。 – 2012-08-01 10:20:24

    +0

    當然,但stackoverflow並沒有顯示我所有的角色。所以我編輯了它。 – arnoudhgz 2012-08-01 10:26:33

    0
    someId = someId.replace(/[][.]/g, '\\\\$&'); 
    
    2

    首先,我們需要匹配 '[', ']' 和一個正則表達式 ''全球。
    這個正則表達式如下:

    /(\[|\]|\.)/g 
    

    然後我們替換每種情況與\\與匹配的子字符串連接在一起$&

    var someId = "#Something[0].AnotherSelected[5].Validator"; 
    var newstr = someId.replace(/(\[|\]|\.)/g, "\\\\$&") 
    alert(newstr)​ 
    

    輸出是

    #Something\\[0\\]\\.AnotherSelected\\[5\\]\\.Validator 
    

    你可以測試一下on jsfiddle

    +1

    這也很完美,很好的解釋。 – Somedeveloper 2012-08-01 10:52:19

    相關問題