我在我的瀏覽器,並與一些在線的JavaScript測試人員測試該代碼片段:此JavaScript代碼片段似乎不會去掉JavaScript中的Unicode轉義字符 - 爲什麼?
var s = "testing \uone two three";
s = s.replace(/\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]/g,'');
alert (s);
我期望的結果警報是剛剛「試一二三」,而是出現一個有趣的人物,其中\ u0123是。
我的問題是爲什麼不更換條帶呢?
我知道這不是最優雅的正則表達式。但這不正確嗎?我正在剝掉反斜槓字符,然後是正好4個十六進制字符。無論如何還是在努力。
另一件事,你的正則表達式不能像你期望的那樣工作,因爲JS被卡在UCS-2處理字符串中。 (好吧,我不認爲在JS字符串中有任何實際上在UTF-16代碼點上運行的函數)。使用'\ uFFFF'的早期解決方案起作用,因爲它也覆蓋了代理代碼單元。 – nhahtdh
@nhahtdh哦,我需要停止信任MDN了,它聲明「Unicode轉義序列需要至少四個字符在\ u之後。 – zerkms
有趣。該字符串出現在我正在檢索的某個JSON中。至少在BBEdit中就是這樣。儘管我嘗試了你的表達方式,但它確實有效,所以我猜想使用你的表達更安全。謝謝。 –