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

如何用正则表达式精准匹配以点开头的3位数字?求正确正则方案

正确的正则表达式解决方案

你的问题出在原正则没有限定整个字符串的范围——它会匹配包含 .xxx 子串的任意字符串,而不是要求整个字符串必须就是 .xxx 格式。要实现精准匹配,需要添加字符串首尾锚点 ^ 和 $,确保输入内容完全符合规则。

最终正则表达式

^\.\d{3}$

正则拆解:

  • ^:匹配字符串的起始位置,确保前面没有多余字符
  • \.:匹配字面量的点(. 在正则中是特殊字符,需要用反斜杠转义)
  • \d{3}:匹配恰好3个数字(等价于 [0-9]{3},写法更简洁)
  • $:匹配字符串的结束位置,确保后面没有多余字符

这样组合起来,就要求整个输入必须是一个点开头,紧接着3个数字,且没有任何其他字符,完全符合你的需求。

Go 代码示例

package main

import (
	"fmt"
	"regexp"
)

func main() {
	testCases := []string{".123", ".000", ".999", "123", "a123", ".123a", ".1234", "a.123"}
	re := regexp.MustCompile(`^\.\d{3}$`)
	
	for _, tc := range testCases {
		match := re.MatchString(tc)
		fmt.Printf("输入: %-8s 匹配结果: %t\n", tc, match)
	}
}

测试结果验证:

  • .123 → true
  • .000 → true
  • .999 → true
  • 123 → false(没有开头的点)
  • a123 → false(开头是字母,无点)
  • .123a → false(末尾有额外字母)
  • .1234 → false(数字超过3位)
  • a.123 → false(开头有字母)

完全符合你的期望匹配规则。

内容的提问来源于stack exchange,提问作者CL So

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:07:33