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

Java正则表达式求助:匹配两类特定格式数字串的正确写法

解决Java中的两个正则匹配问题

嘿,刚看到你的问题,这两个都是正则里很容易踩的小坑,我来帮你捋清楚:

问题1:匹配以79开头、9位纯数字的字符串

你原来写的^(79)\d{9}$有个长度计算错误:79已经占了2位,后面再跟\d{9}的话,总长度就变成2+9=11位了,而你要匹配的791234567是9位,自然匹配不上。

正确的正则应该是:

^79\d{7}$

或者更清晰的等效写法:

^79[0-9]{7}$

解释:79占2位,\d{7}匹配剩下的7位数字,总长度正好是9位,完美匹配你要的目标字符串。

问题2:匹配以79或78开头、10位纯数字的字符串

你原来的^(79-78)\d{10}$有两个明显问题:

  1. (79-78)的写法不对,-在这里不是“或”的意思,它会被当成普通字符处理;要表示“79或者78”,得用|(竖线)来分隔两个前缀;
  2. 同样是长度问题:前缀占2位,后面应该匹配8位数字,而不是10位,否则总长度会变成2+10=12位,完全不符合你的需求。

正确的正则是:

^(79|78)\d{8}$

解释:(79|78)表示匹配开头是79或者78,\d{8}匹配剩下的8位数字,总长度2+8=10位,完全符合你的要求。

如果在Java代码里使用,记得字符串中的反斜杠要转义成\\,示例代码如下:

Pattern pattern = Pattern.compile("^(79|78)\\d{8}$");
Matcher matcher = pattern.matcher("7912345678");
if (matcher.matches()) {
    // 匹配成功后的逻辑处理
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:40:48