在Javascript中查找xml转义破折号

时间:2011-07-06 03:30:52

标签: javascript regex

我想使用正则表达式在javascript中查找html中的破折号。 html页面中的破折号有时可能是使用字符串值–进行xml转义。但是,使用正则表达式来查找此字符串由于某种原因不起作用。

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

常规进行,/–/ig不会产生任何值。正则表达式/-/i也找不到转义的短划线–

是否有人知道可以找到转义短划线的正则表达式?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

试试这个:

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

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