我正在努力想出一个合理的解决方案。我需要替换以下字符:使用正则表达式替换的⁰²²³⁴⁵⁶⁷⁸⁹。我认为你会这样做:
item = item.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, '');
但是,当我尝试这样做时,notepad++会将符号5-9转换为常规的脚本数字。我意识到这可能与我正在使用的编码格式有关,我看到它被设置为ANSI。
我从来没有真正理解过各种编码格式之间的区别。但是我想知道这个问题有什么简单的解决方法吗?
发布于 2016-03-14 06:59:02
下面是查找所有上标数字的简单正则表达式
/\p{No}/gu/
细目:
unicode匹配上标或下标数字,或者不是数字的数字:模式字符串被视为0-9
u modifier
:-16。还会导致转义序列与unicode characters
g modifier
:全局匹配。所有匹配项(第一次匹配时不返回)https://regex101.com/r/zA8sJ4/1
现在,大多数现代浏览器仍然没有对正则表达式中的unicode数字的内置支持。我推荐使用xregexp
库
XRegExp提供了增强的(和可扩展的) JavaScript正则表达式。你得到了新的现代语法和标志,超出了浏览器本身的支持。XRegExp也是一个正则表达式实用工具,它提供的工具可以让客户端的抓取和解析变得更容易,同时使您不必担心JavaScript正则表达式令人讨厌的方面,如跨浏览器不一致或手动操作lastIndex。
http://xregexp.com/
HTML解决方案
HTML有一个用于表示上标文本的<sup>
标记。
标记定义上标文本。上标文本显示在正常行上方半个字符,并且有时以较小的字体呈现。上标文本可用于脚注,如WWW1。
如果有上标数字,html标记几乎肯定会有sup
标记。
var math = document.getElementById("math");
math.innerHTML = math.innerHTML.replace(/<sup>[\d]?<\/sup>/g, "");
<p id="math">4<sup>2</sup>+ 3<sup>2</sup></p>
发布于 2016-03-14 07:47:47
使用UTF-8。如果由于某种原因您不能,一个解决办法是逃脱
var rg = new RegExp(
"[\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079]",
"g"
);
发布于 2016-03-14 08:31:07
我建议尝试下面的正则表达式:
/[\u2070-\u209f\u00b0-\u00be]+/g
代码将如下所示
var re = /[\u2070-\u209f\u00b0-\u00be]+/g;
var str = '⁰¹²³⁴⁵⁶⁷⁸⁹';
var subst = '';
var result = str.replace(re, subs);
成功运行后结果将包含:
2sometext
请在此处查看demo
https://stackoverflow.com/questions/35976910
复制相似问题