首页 > 解决方案 > 条件正则表达式

问题描述

我有以下正则表达式,它验证一个字符串只包含数字并且长度在 10 到 11 个字符之间。

^[0-9]{10,11}$

但是,如果字符串的长度为 11,我需要验证第一个字符是否为 1。如果字符串的长度为 10,则无需进一步验证。

有效字符串示例

3455558899

15554445555

无效字符串示例

25554445555

85554445555

这可以用正则表达式吗?顺便说一句,这个正则表达式将用于 Java 应用程序。

标签: javaregex

解决方案


您可以将此正则表达式与1at start 的可选匹配一起使用,然后匹配接下来的 10 位数字:

^1?\d{10}$

正则表达式演示

这将使此正则表达式在第一个数字为 11 位时匹配 11 位数字,1否则它将匹配 10 位数字。

正则表达式详细信息:

  • ^: 开始
  • 1?: 可选地在开始时匹配 1
  • \d{10}: 精确匹配 10 位数字
  • $: 结尾

在 Java 中使用以下字符串来构造您的正则表达式:

String re = "^1?\\d{10}$";

推荐阅读