JavaScript如何移除日/中文日元符号?替换方法失效求助
解决日元符号无法被
replace移除的问题 这种情况大概率是字符编码的坑——视觉上看起来一样的日元符号,其实可能是不同的Unicode字符!
你遇到的问题,通常是因为字符串里的符号不是半角的¥(Unicode U+00A5),而是全角的¥(Unicode U+FFE5)。这俩长得几乎一样,但编码完全不同,所以你用半角符号的匹配规则自然找不到它。
快速排查与解决步骤:
先确认字符的真实编码
用charCodeAt()获取目标符号的Unicode编码,比如假设符号在字符串第0位:const str = '¥999'; // 你的目标字符串 console.log(str.charCodeAt(0)); // 输出65509就是全角¥,输出165就是半角¥精准匹配移除
- 如果是全角
¥(U+FFE5),用这个正则:str = str.replace(/\uFFE5/g, ''); - 如果是半角
¥(U+00A5),用这个:str = str.replace(/\u00A5/g, ''); - 保险起见,直接同时匹配两种符号,不管遇到哪种都能移除:
str = str.replace(/[\u00A5\uFFE5]/g, '');
- 如果是全角
这样不管日元符号在字符串的哪个位置,都能精准检测并移除啦~
内容的提问来源于stack exchange,提问作者Hasen
相关产品推荐
相关产品推荐

