2016-12-27 109 views
-4

我有id='#ul_[]ER$%#'控制,但是當我用正則表達式如下語法逃脫控制ID特殊字符,然後將其返回下列字符串#ul_\[\]\E\R\$\%\#, 它會把字母也。所以請讓我知道如何才能使用jQuery來避免字符串中的特殊字符。爲了逃避我用下面的正則表達式的特殊字符:逃逸特殊字符jQuery中selecter

$("#ul_"+data.replace(/([#;&,.+-_=?{}*~\':%"!^$[\]()=>|\/])/g,"\\$1")) 
+2

當你問你的問題,有一個很大的橙色**如何格式化**框在文本區域的右側,其中有用的信息。還有一個格式化輔助工具的整個工具欄。和一個** [?] **按鈕提供格式幫助。 *和*位於文本區域和「發佈您的問題」按鈕之間的預覽區域(以便您必須滾動查看按鈕才能找到該按鈕,以鼓勵您查看該按鈕),以顯示帖子在發佈時的樣子。明確你的帖子,並證明你花時間這樣做,提高你獲得良好答案的機會。 –

+0

[this](https://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters-used-in -css-notation /)可能會幫助你 – Satpal

+0

我已經試過這個。如果字符之間有任何特殊字符,那麼它不工作.eg $%H&K – Pankaj

回答

0

這裏有兩個問題:

  1. -正則表達式類([...])中未作爲一個連字符,但區劃界定範圍從+_,其中包括大寫的字母數字字符。所以要麼逃避這個連字符,要麼把它放在課程的最後;

  2. 選擇器id屬性應該以#開頭。儘管您的id屬性值以散列(#)開頭,但您需要另一個屬性值,並且您需要跳過屬於id值一部分的值。

那麼這將工作:

var data = '[]ER$%#'; 
 

 
var sel = '#' + ("#ul_"+data).replace(/([#;&,.+\-_=?{}*~\':%"!^$[\]()=>|\/])/g,"\\$1"); 
 

 
console.log($(sel).text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='#ul_[]ER$%#'>test</div>

一些更多的評論:

  • 你很可能只是從人物的名單中刪除-_逃逸。它們在jQuery選擇器中沒有特殊的含義。
  • 另一方面,空間`(back tick),@<應該應該逃脫。見字符的列表中jQuery documentation

使用任何元字符(如!"#$%&'()*+,./:;<=>[email protected][\]^`{|}~)作爲名稱的文字部分,它必須被轉義