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

如何用JavaScript正则表达式校验仅包含数字、*、#、+的字符串

正确实现方案

原有正则的问题

你编写的正则/^[\d]{1,}[*,#,+]{1,}$/存在两个核心错误:

  • 逻辑上要求「数字全部在前,特殊符号全部在后」,无法匹配两类字符穿插出现的合法值
  • 字符集内的逗号会被识别为允许匹配的字符,不符合你的规则要求

正则实现代码

// 校验函数
function checkValidStr(str) {
  // 正则含义:整个字符串只能由数字、*、#、+组成,长度至少为1
  const validReg = /^[\d*#+]+$/
  return validReg.test(str)
}

测试效果

你提供的合法示例全部返回true:

checkValidStr('+182031203') // true
checkValidStr('+12312312312*#') // true
checkValidStr('+2131*1231#') // true
checkValidStr('*12312+#') // true
checkValidStr('#123*########') // true

// 含非法字符的示例返回false
checkValidStr('123a') // false
checkValidStr('12-3') // false
checkValidStr('') // false

正则参数说明

  • ^ 匹配字符串的起始位置,避免前缀存在非法字符
  • [\d*#+] 匹配数字、*、#、+中的任意单个字符,字符集内无需添加逗号分隔
  • + 限定前面的匹配规则至少出现1次,避免空字符串通过校验
  • $ 匹配字符串的结束位置,避免后缀存在非法字符

内容的提问来源于stack exchange,提问作者sonphung.xf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:27:02