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

React输入掩码处理:将(###) ###-####转为纯数字存入数据库

解决React中电话掩码转纯数字的问题

嘿,我完全懂你遇到的这个麻烦——用掩码格式化后的电话号码带了括号、空格和横杠,没法直接存入数据库,之前的正则只去掉了左括号,确实让人头疼!

其实你需要的是移除所有非数字的字符,最简单有效的方式就是用匹配非数字的正则加上全局替换:

const number = value.replace(/\D/g, "");

给你拆解下这个正则:

  • \D:专门匹配任何非数字的字符,不管是掩码里的括号、空格还是横杠,全能覆盖到
  • g:全局匹配标志,确保把字符串里所有符合条件的非数字字符都替换掉,而不是只处理第一个

举个实际例子,要是你的输入是(123) 456-7890,运行上面的代码后会直接得到1234567890,正好是10位纯数字,完美适配数据库的存储要求。

为啥你之前的正则没起作用?

你写的/\([\(\)]\)/其实是在匹配「左括号 + 左/右括号 + 右括号」这种非常局限的组合,既没覆盖到空格和横杠,也没法处理完整的掩码格式,自然只能去掉个左括号啦。

额外加个小提醒:

如果你想确保处理后的结果一定是合规的10位数字,可以加个简单校验:

const cleanedNumber = value.replace(/\D/g, "");
if (cleanedNumber.length === 10) {
  // 符合要求,放心存入数据库
} else {
  // 提示用户输入有效的10位电话号码
}

内容的提问来源于stack exchange,提问作者Dan Orlovsky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:29:10