我想使用正则表达式在javascript中查找html中的破折号。 html页面中的破折号有时可能是使用字符串值–
进行xml转义。但是,使用正则表达式来查找此字符串由于某种原因不起作用。
var html = document.getElementsByTagName('html').item(0).innerHTML;
var escapedDash = /–/ig;
var foundEscapedDash = html.match(escapedDash);
alert(foundEscapedDash);
常规进行,/–/ig
不会产生任何值。正则表达式/-/i
也找不到转义的短划线–
是否有人知道可以找到转义短划线的正则表达式?
答案 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);