You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何用正则替换除正负号(+、-)和数字外的所有字符

问题原因

你当前使用的/\D/g正则等价于/[^\d]/g,作用是匹配所有非数字字符,负号不属于数字范畴,因此会被一并替换删除,导致最终结果丢失了开头的负号。

解决方案

仅需保留负号的场景(匹配你当前的纬度处理需求)

使用正则/(?!^-)[^\d]/g即可,该逻辑会跳过匹配字符串开头的负号,仅删除其余所有非数字字符:

const lat = "-3340Abcs"
const newLat = lat.replace(/(?!^-)[^\d]/g, "") 
console.log(newLat) // 输出 -3340,符合预期

同时兼容正号、负号开头的场景

如果需要同时支持正号开头的数值字符串处理,调整正则为/(?!^[+-])[^\d]/g即可:

const lng = "+12147def"
const newLng = lng.replace(/(?!^[+-])[^\d]/g, "") 
console.log(newLng) // 输出 +12147

注意:该方案仅会保留字符串开头的唯一一个正负号,中间位置出现的正负号会被正常过滤,避免生成不符合数值规范的结果。

内容的提问来源于stack exchange,提问作者Ali Raza Shaheb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:27:02