我正在努力想出一個合理的解決方案。我需要使用正則表達式替換替換下列字符:⁰¹²³₄₅⁶⁷⁸⁹。我會認爲你只是這樣做:正則表達式來替換所有上標數字
item = item.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, '');
然而,當我嘗試這樣做,記事本+ +符號轉換成5-9楷書數字。我意識到這可能與我使用的編碼格式有關,我將其設置爲ANSI。
我從來沒有真正理解各種編碼格式之間的差異。但我想知道這個問題是否有簡單的解決方法?
我正在努力想出一個合理的解決方案。我需要使用正則表達式替換替換下列字符:⁰¹²³₄₅⁶⁷⁸⁹。我會認爲你只是這樣做:正則表達式來替換所有上標數字
item = item.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, '');
然而,當我嘗試這樣做,記事本+ +符號轉換成5-9楷書數字。我意識到這可能與我使用的編碼格式有關,我將其設置爲ANSI。
我從來沒有真正理解各種編碼格式之間的差異。但我想知道這個問題是否有簡單的解決方法?
這裏是用於查找所有標數字
簡單的正則表達式/\p{No}/gu/
擊穿:
\p{No}
一個標或下標數字,或一個數字,是不是數字[0-9]匹配u modifier
:unicode:模式字符串被視爲UTF-16。也導致轉義序列匹配Unicode字符g modifier
:全局。所有的比賽(不上的第一場比賽返回)https://regex101.com/r/zA8sJ4/1
現在,大部分現代瀏覽器仍然在對正則表達式Unicode數字支持沒有內置。我建議使用xregexp
庫
XRegExp提供增強(和可擴展)JavaScript正則表達式。除了本機支持的瀏覽器外,您還可以獲得新的現代語法和標誌。 XRegExp也是一個正則表達式工具帶,其工具可以使您的客戶端grepping和分析更容易,同時讓您免於擔心JavaScript正則表達式的繁瑣方面,如跨瀏覽器不一致性或手動操縱lastIndex。
HTML解決方案
HTML有較標文本<sup>
標籤。
該標籤定義了上標文本。上標文字出現在法線上半個字符處,並且有時以較小的字體呈現。上標文字可用於腳註,如WWW [1]。
如果有上標數字,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>
使用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
S ee demo here
您是否嘗試過將記事本++編碼設置爲utf8? –
^你應該**總是**正在使用,對於所有的東西 – adeneo
另外,你必須把'/ [⁰¹³³³³]/g'正確地包起來,你錯過了啓動支架 – adeneo