如何在 JavaScript [] 正则表达式中编码 &emdash UTF?

How to code &emdash UTF in JavaScript [] regular expressions?

提问人:WayneF 提问时间:3/27/2023 最后编辑:WayneF 更新时间:3/28/2023 访问量:95

问:

UTF 中的 HTML 是 ,十六进制被视为 。如何将其编码为正则表达式比较?(“如果这个,那么那个”)类型的比较?上面只是几个 ASCII 字符,但如何在正则表达式中将其编码为一个字符?&emdash;—1EFBBBFE280941/[ ]/

这个概念可能吗?

编辑:仍然感到困惑,但我现在意识到我的一些困惑是 EF BB BF 是在我的十六进制查看器中添加的某种工件。它曾经位于十六进制列表的顶部,但它不在任何正在检查的数据字节中。—

我混淆了它的名字 Em Dash,但代码是,它的数据是 E2 80 94。我实际上在我自己的代码中使用它,认为它节省了一次查找。&emdash;——

至于提供代码,我想是这样的:

HTML:  
<div id="a12"> —    —   —   —   —   -40.83  337.01  147.96  -31.27  -82.16  47.42 -ABC- 1 &mdash; 2 &#x2014; 3 &#8212; 4</div>

The first part is Copy/Paste of the 11 years of Total Return entries
 at  https:/.www.morningstar.com/stocks/xnas/roku/price-fair-value
The 2nd part is the 3 HTML equivalents of the &mdash; character.
The goal is to remove all &mdash;
 (to be replaced by "" ... there are other blank and tab there with it)


My Javascript testing:
var x = document.getElementById("a12");
var m = x.textContent;
var rgex =  /u\2014/g;
//var   rgex = /[u\2014]/g;
//var   rgex = /\u{2014}\u/g ;

var n = rgex.test(m);       //but test is false
m = m.replace(rgex, "");        
alert( m + "      " + n);   //and string is unchanged

/u\2014/g 是我从阅读中尝试的,但它不起作用(也没有其他尝试)。

所以我的问题是,应该检测什么?&mdash;

编辑:FWIW,我想我明白了!

看起来做得很好。我以前试过,但一定有语法问题。var rgex = /\u2014/g;

并且还删除了制表符和空格(全部替换为分隔符的空格)。var rgex = /[\t \u2014]/g;

https://www.http://unicode.org/reports/tr18/ 对我的帮助,第 1.1 节说得很清楚。

JavaScript 则表达 UTF-8

评论

1赞 Brian61354270 3/27/2023
这回答了你的问题吗?如何在 JavaScript 中使用 Unicode 感知正则表达式?
1赞 Brian61354270 3/27/2023
必读的背景知识:每个软件开发人员绝对、肯定地必须了解 Unicode 和字符集的绝对最低限度(没有任何借口!请注意,UTF-8 Unicode 代码点的编码。U+2014 是 的 Unicode 代码点。在 UTF-8 中,它由三字节序列编码E2 80 94
2赞 traktor 3/27/2023
十六进制的代码点是 - 从哪里来?&#x201420141EFBBBFE280941
0赞 WayneF 3/27/2023
#Brian61354270 谢谢,但目前还不清楚。我以为有一页说 /\u2014/g,但这不起作用。这需要大量的阅读才能解决这个问题。我只想将 emdash 更改为空白 20。这是晨星总回报率百分比统计数据,在公开股票存在之前的早年是空白的,只有空格选项卡,20 和 09。但是这个周末它发生了变化,新的,也许正在工作,现在我看到它们之间带有 E2 80 94 的空格和选项卡,显示为 emdash。但据我所知,没有实际的 emdash。要看的样本是不是 morningstar.com/stocks/xnas/roku/price-fair-value
1赞 JosefZ 3/27/2023
EFBBBF并且是 '' (U+FEFF, Zero Width No-Break Space/BYTE ORDER MARK) 和 (U+2014, Em Dash) 的 UTF-8 字节序列。不清楚 1 是什么;请编辑您的问题,以提供一个最小的可重复示例。顺便说一句,没什么 - 也许你的意思是?E28094&emdash;&mdash;

答: 暂无答案