2

我正在构建一个表格,内容从页面中的其他元素中提取(页面抓取)。

我正在使用 innerText 或 textContent 来提取文本,然后使用正则表达式来修剪它:

string.replace(/^\s+|\s+$/g,"");

这在 IE 9 和 Chrome 中运行良好,但在 IE 8 中我得到一个我无法识别的垃圾字符。我能够通过 jsfiddle 中的警报重现该行为:

http://jsfiddle.net/Te4FQ/

这个额外的字符是什么,我怎样才能摆脱它?

更新:感谢有用的回复!似乎有问题的字符是u200E(从左到右标记)。所以我的问题的第二部分仍然存在,我怎样才能用正则表达式摆脱这些字符,而只保留常规文本?

4

2 回答 2

6

jsFiddle 代码段中的“有风险”和“完成”<th>标签在其内容的末尾都有一个 U+200E(从左到右标记,又名 LRM)代码点。那不是空格字符,所以它不能被\s.

摆脱这个字符的一种方法是使用XRegExp 库,这样您就可以用\p{C}空字符串替换所有匹配项(即删除它们)。\p{C}匹配 Unicode 的“其他”类别中的任何代码点,包括控制、格式、私人使用、代理和未分配的代码点。具体来说,U+200E 属于\p{Cf}“其他,格式”子类别。

于 2012-06-04T21:41:54.033 回答
1

尝试将结果打印到页面

escape(string.replace(/^\s+|\s+$/g,""));

您的垃圾字符应显示为转义码。

于 2012-06-04T17:01:10.450 回答