2011-07-06 19 views
1

我想用正則表達式在javascript中查找html中的破折號。 html頁面中的破折號有時可能會被xml轉義,字符串值爲–。但是,使用正則表達式來查找此字符串由於某種原因不起作用。在Javascript中查找xml轉義破折號

var html = document.getElementsByTagName('html').item(0).innerHTML; 
var escapedDash  = /–/ig; 
var foundEscapedDash = html.match(escapedDash); 
alert(foundEscapedDash); 

定期預測,/–/ig不會導致任何值。正則表達式/-/i也找不到逃脫的破折號–

有誰知道可以找到逃脫的破折號的正則表達式嗎?

回答

2

當您設置innerHTML爲字符串與實體,它會將其轉換爲文字字符。例如:

var div = document.createElement('div'); 
div.innerHTML = '–' 
alert(div.innerHTML.length); // 1, not 7 as may be expected 

所以,你需要符合實際的性格&ndash,而要做到這一點,你可以使用unicode literal表示。對於「–」,它是\u2013

div.innerHTML.match(/\u2013/ig) 

順便說一句,假設破折號是字符串的第一個字符,你可以找到十六進制數0x2013自己與div.innerHTML.charCodeAt(0).toString(16)

+0

你真是太好了謝謝你! – onejigtwojig

0

試試這個:

var str = '–hello world –'; 
var escapedDash = /(–+)/ig; 

var foundEscapedDash = str.match(escapedDash); 
alert(foundEscapedDash);