首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式替换所有上标数字

正则表达式替换所有上标数字
EN

Stack Overflow用户
提问于 2016-03-14 06:52:43
回答 3查看 7.6K关注 0票数 3

我正在努力想出一个合理的解决方案。我需要替换以下字符:使用正则表达式替换的⁰²²³⁴⁵⁶⁷⁸⁹。我认为你会这样做:

代码语言:javascript
运行
复制
item = item.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, '');

但是,当我尝试这样做时,notepad++会将符号5-9转换为常规的脚本数字。我意识到这可能与我正在使用的编码格式有关,我看到它被设置为ANSI。

我从来没有真正理解过各种编码格式之间的区别。但是我想知道这个问题有什么简单的解决方法吗?

EN

回答 3

Stack Overflow用户

发布于 2016-03-14 06:59:02

下面是查找所有上标数字的简单正则表达式

代码语言:javascript
运行
复制
/\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标记。

代码语言:javascript
运行
复制
var math = document.getElementById("math");

math.innerHTML = math.innerHTML.replace(/<sup>[\d]?<\/sup>/g, "");
代码语言:javascript
运行
复制
<p id="math">4<sup>2</sup>+ 3<sup>2</sup></p>

票数 5
EN

Stack Overflow用户

发布于 2016-03-14 07:47:47

使用UTF-8。如果由于某种原因您不能,一个解决办法是逃脱

代码语言:javascript
运行
复制
var rg = new RegExp(
  "[\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079]",
  "g"
);
票数 3
EN

Stack Overflow用户

发布于 2016-03-14 08:31:07

我建议尝试下面的正则表达式:

代码语言:javascript
运行
复制
/[\u2070-\u209f\u00b0-\u00be]+/g

代码将如下所示

代码语言:javascript
运行
复制
var re = /[\u2070-\u209f\u00b0-\u00be]+/g; 
var str = '⁰¹²³⁴⁵⁶⁷⁸⁹';
var subst = ''; 

var result = str.replace(re, subs);

成功运行后结果将包含:

代码语言:javascript
运行
复制
2sometext

请在此处查看demo

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35976910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档