java - 条件正则表达式
问题描述
我有以下正则表达式,它验证一个字符串只包含数字并且长度在 10 到 11 个字符之间。
^[0-9]{10,11}$
但是,如果字符串的长度为 11,我需要验证第一个字符是否为 1。如果字符串的长度为 10,则无需进一步验证。
有效字符串示例
3455558899
15554445555
无效字符串示例
25554445555
85554445555
这可以用正则表达式吗?顺便说一句,这个正则表达式将用于 Java 应用程序。
解决方案
您可以将此正则表达式与1
at start 的可选匹配一起使用,然后匹配接下来的 10 位数字:
^1?\d{10}$
这将使此正则表达式在第一个数字为 11 位时匹配 11 位数字,1
否则它将匹配 10 位数字。
正则表达式详细信息:
^
: 开始1?
: 可选地在开始时匹配 1\d{10}
: 精确匹配 10 位数字$
: 结尾
在 Java 中使用以下字符串来构造您的正则表达式:
String re = "^1?\\d{10}$";
推荐阅读
- php - ODBC PDO 选择查询 LIKE 子句在 PHP 7 中不起作用
- vb.net - 使用 Form.KeyPreview 将 KeyPress 传递到文本框
- java - 表格分页和按列过滤 spring mvc + thymeleaf + bootstrap
- javascript - 用于合并值列表/数组的 BigQuery JavaScript UDF
- r - `j` 中的评估顺序不是连续的
- pandas - Pandas 创建新列,该列是前行值的平均值
- ios - Angular 无法在 IOS 设备上存储 jwt 令牌
- java - Java 泛型:Foo
,Foo,Foobar > 和 Foobar - node.js - 定义后如何从另一个文件中获取变量
- c++ - 如果 iostream 对象不可复制,为什么下面的代码是合法的?