Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换字符串Javascript中的上标和下标字符_Javascript_Regex_Superscript - Fatal编程技术网

替换字符串Javascript中的上标和下标字符

替换字符串Javascript中的上标和下标字符,javascript,regex,superscript,Javascript,Regex,Superscript,我想从文本中删除所有上标和下标字符 Exp:'⁰' 我找到了一个,但它只考虑上标数字,而不考虑字符或下标 有人知道如何做到这一点吗?一种方法是将所有可能的上标和下标一一替换,但这有点不切实际。基于和手动搜索A中的“下标”和“上标”,您可以使用 .replace(/[\u006E\u00B0\u00B2\u00B3\u00B9\u02AF\u0670\u0711\u2121\u213B\u2207\u29B5\uFC5B-\uFC5D\uFC63\uFC90\uFCD9\u2070\u2071\u

我想从文本中删除所有上标和下标字符

Exp:
'⁰'

我找到了一个,但它只考虑上标数字,而不考虑字符或下标

有人知道如何做到这一点吗?一种方法是将所有可能的上标和下标一一替换,但这有点不切实际。

基于和手动搜索A中的“下标”和“上标”,您可以使用

.replace(/[\u006E\u00B0\u00B2\u00B3\u00B9\u02AF\u0670\u0711\u2121\u213B\u2207\u29B5\uFC5B-\uFC5D\uFC63\uFC90\uFCD9\u2070\u2071\u2074-\u208E\u2090-\u209C\u0345\u0656\u17D2\u1D62-\u1D6A\u2A27\u2C7C]+/g, '')

+
量词(一个或多个连续出现)将使正则表达式引擎更容易一次性删除整个1+子/上标字符块

请注意
ᵀᴹ是修饰字母,不是正式的上标字符。如果你想包括它们,你需要

var res = s.replace(/(?:\uD81A[\uDF40-\uDF43]|\uD81B[\uDF93-\uDF9F\uDFE0]|[\u006E\u00B0\u00B2\u00B3\u00B9\u02AF\u0670\u0711\u2121\u213B\u2207\u29B5\uFC5B-\uFC5D\uFC63\uFC90\uFCD9\u2070\u2071\u2074-\u208E\u2090-\u209C\u0345\u0656\u17D2\u1D62-\u1D6A\u2A27\u2C7C\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C\uA69D\uA717-\uA71F\uA770\uA788\uA7F8\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E\uFF9F])+/g, '')

要规范化下标和上标数字,有必要使用字典并在作为替换参数传递的匿名方法中动态替换:

“0”号,“u00B9'9”1,“\u00B9'1,,,“\UU00B9'1,,,“\u00B2”2,,,“\u00B2'2,,“\U00B33':“3”3,,“\U超级自变量超级自变量的超级自变量超级自变量的超级自变量,超级自变量的超级自变量的超级自变量,超级自变量的超级自变量,超级自变量的超级自变量,超级自变量亚亚亚亚亚亚亚亚亚亚基亚亚亚亚亚亚亚基亚亚亚基亚基亚亚基亚亚基亚基亚基亚基亚亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚基亚亚基亚基亚基亚基亚基亚基亚基亚基:'5'、'\u2086':'6'、'\u2087':'7'、'\u2088':'8'、'\u2089':'9'}; var test_string=“下标:₀₁₂₃₄₅₆₇₈₉ 及上标:⁰¹²³⁴⁵⁶⁷⁸⁹"; var regex=new RegExp('['+Object.keys(super_sub_script_dict).join(“”+']','g');//=>/[⁰¹²³⁴⁵⁶⁷⁸⁹₀₁₂₃₄₅₆₇₈₉]/G //或 //var regex=/[\u00B9\u00B2\u00B3\u2070\u2074-\u2089]/g; log(test_string.replace(regex,函数(x){ 返回super_sub_script_dict[x];
}))
这些字符都列在了吗?另外,我想如果需要删除这些字符,除了列出一长串这些字符,并在loopWhy循环中逐个替换它们之外,没有其他方法了。能否显示一个示例字符串和预期输出?顺便问一句,该列表是否涵盖了您需要的字符?请尝试
。替换(/[\u2070\u2071\u2074-\u208E\u2090-\u209C]+/g',)
这似乎不起作用。我两个都试过了”ᵀᴹ“。替换(/[\u2070\u2071\u2074-\u208E\u2090-\u209C]+/gi,”)和“”替换(/[\u2070\u2071\u2074-\u208E\u2090-\u209C]+/g,”),但未替换任何内容。顺便说一句,感谢您的帮助方法
ᵀᴹ是修饰字母。你也想匹配这样的修饰字母吗?上标或下标中的所有内容都会在我的工作应用程序上引起问题,我想删除所有内容。请注意,即使是“上标”或“下标”“没有从你发布的正则表达式中替换。我在chrome控制台上测试了它。我用两种变体更新了答案:一种变体包括Unicode名称包含“下标”/“上标”的字符”单词,以及除第一个模式外还匹配修饰符字母的第二个解决方案。@MSD I添加了一个代码段,说明如何规范化下标和上标数字。