Javascript 正则表达式替换所有上标数字
我正在努力找出一个合理的解决办法。我需要替换以下字符:⁰¹²³⁴⁵⁶⁷⁸⁹ 使用正则表达式替换。我想你会这么做:Javascript 正则表达式替换所有上标数字,javascript,regex,string,unicode,superscript,Javascript,Regex,String,Unicode,Superscript,我正在努力找出一个合理的解决办法。我需要替换以下字符:⁰¹²³⁴⁵⁶⁷⁸⁹ 使用正则表达式替换。我想你会这么做: item = item.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, ''); 然而,当我尝试这样做时,notepad++会将符号5-9转换为常规脚本数字。我意识到这可能与我使用的编码格式有关,我看到它被设置为ANSI 我从来没有真正理解过各种编码格式之间的区别。但是我想知道是否有任何简单的方法可以解决这个问题?这里是查找所有上标数字的简单正则表达式 /\p{No}/gu/
item = item.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, '');
然而,当我尝试这样做时,notepad++会将符号5-9转换为常规脚本数字。我意识到这可能与我使用的编码格式有关,我看到它被设置为ANSI
我从来没有真正理解过各种编码格式之间的区别。但是我想知道是否有任何简单的方法可以解决这个问题?这里是查找所有上标数字的简单正则表达式
/\p{No}/gu/
细分:
匹配上标或下标数字,或非数字[0-9]的数字\p{No}
:unicode:模式字符串被视为UTF-16。还导致转义序列与unicode字符匹配u修饰符
:全局。所有比赛(第一场比赛不返回)g修饰符
xregexp
库
XRegExp提供了增强(和可扩展)的JavaScript正则表达式。您可以获得浏览器本机支持的新的现代语法和标志。XRegExp也是一个正则表达式实用工具,它提供了一些工具,可以简化客户端的greping和解析,同时让您不用担心JavaScript正则表达式的一些令人讨厌的方面,如跨浏览器不一致或手动操作lastIndex
HTML解决方案
HTML有一个表示上标文本的
标记
标记定义上标文本。上标文本显示在标准线上方半个字符,有时以较小的字体呈现。上标文本可用于脚注,如WWW[1]
如果有上标数字,html标记几乎肯定有sup
标记
var math=document.getElementById(“math”);
math.innerHTML=math.innerHTML.replace(/[\d]?/g,”)代码>
42+32使用UTF-8。如果由于某种原因你不能,一个解决办法正在逃避
var rg = new RegExp(
"[\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079]",
"g"
);
我建议尝试以下正则表达式:
/[\u2070-\u209f\u00b0-\u00be]+/g
代码看起来像
var re = /[\u2070-\u209f\u00b0-\u00be]+/g;
var str = '⁰¹²³⁴⁵⁶⁷⁸⁹';
var subst = '';
var result = str.replace(re, subs);
成功运行后,结果将包含:
2sometext
请参见此处您是否尝试将记事本++编码设置为utf8?^您应该始终使用utf8,因此,您还必须将其包装起来/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g
正确地说,您缺少了起始括号。您确实需要知道各种字符编码之间的差异。这很重要。这应该有助于开始您的旅程。如果您更正正则表达式(并且JSFIDLE使用UTF8),效果很好->我认为这在javascript中不是有效的正则表达式,unicode标志不是supported@adeneo-ECMAScript 2015支持Unicode转义序列(和u标志),但似乎还没有多少浏览器实现它们。\p{No}
也匹配非上标数字。@RobG-确实,我不知道。我可以在规范中找到它,但关于浏览器支持的内容不多,似乎在任何地方都不支持它。但是,OP的正则表达式工作得很好。