Java 条件正则表达式

Java 条件正则表达式,java,regex,Java,Regex,我有下面的正则表达式,它验证字符串只包含数字,长度在10到11个字符之间 ^[0-9]{10,11}$ 但是,如果字符串的长度为11,则需要验证第一个字符是否为1。如果字符串的长度为10,则无需进一步验证 有效字符串的示例 3455558899 15554445555 无效字符串的示例 25554445555 85554445555 这在正则表达式中是可能的吗?顺便说一句,此正则表达式将在Java应用程序中使用。您可以在开始时将此正则表达式与可选的1匹配,然后与接下来的10位数字匹配:

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

^[0-9]{10,11}$
但是,如果字符串的长度为11,则需要验证第一个字符是否为1。如果字符串的长度为10,则无需进一步验证

有效字符串的示例

3455558899

15554445555
无效字符串的示例

25554445555

85554445555

这在正则表达式中是可能的吗?顺便说一句,此正则表达式将在Java应用程序中使用。

您可以在开始时将此正则表达式与可选的1匹配,然后与接下来的10位数字匹配:

^1?\d{10}$
这将使该正则表达式在第一个数字为1时匹配11个数字,或者匹配10个数字

正则表达式详细信息:

^:开始 1?:可选择在开始时匹配1 \d{10}:精确匹配10位数字 $:完 在Java中,使用以下字符串构造正则表达式:

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

您可以使用此正则表达式,在开始时可选匹配1,然后匹配接下来的10位数字:

^1?\d{10}$
这将使该正则表达式在第一个数字为1时匹配11个数字,或者匹配10个数字

正则表达式详细信息:

^:开始 1?:可选择在开始时匹配1 \d{10}:精确匹配10位数字 $:完 在Java中,使用以下字符串构造正则表达式:

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

如果这是一个数值,则更容易转换为Long,然后比较该值而不是regex

String x = {your value};
Long i = Long.valueOf(x);
if(i <= 19999999999L) return true;

如果这是一个数值,则更容易转换为Long,然后比较该值而不是regex

String x = {your value};
Long i = Long.valueOf(x);
if(i <= 19999999999L) return true;

那很好用!谢谢,我真的很感激!那很好用!谢谢,我真的很感激!有趣的解决方案有趣的解决方案