Regex 同一字符串上的不同正则表达式条件

Regex 同一字符串上的不同正则表达式条件,regex,Regex,我正试图根据我们的业务逻辑实现电话号码的正则表达式 客户想要的是,手机必须包含8到15个字符的数字,并且还可以包含任何不增加数字计数的空格和点。因此,理论上这应该是有效的: 3 .... 44444444 因为它包含9个数字 我真的不能再往前走了 ~[0-9\.\ ]{8,15}$ 但很明显,它也将点和空间计算到了极限 甚至可以通过正则表达式实现它吗?据我所知,正则表达式无法验证这一点。但是,您可以全局删除所有空格和点,然后尝试匹配一个正则表达式,该正

我正试图根据我们的业务逻辑实现电话号码的正则表达式

客户想要的是,手机必须包含8到15个字符的数字,并且还可以包含任何不增加数字计数的空格和点。因此,理论上这应该是有效的:

3          ....            44444444
因为它包含9个数字

我真的不能再往前走了

~[0-9\.\ ]{8,15}$
但很明显,它也将点和空间计算到了极限


甚至可以通过正则表达式实现它吗?

据我所知,正则表达式无法验证这一点。但是,您可以全局删除所有空格和点,然后尝试匹配一个正则表达式,该正则表达式是
^[:digit:]{8,15}$

,据我所知,正则表达式无法验证这一点。但是,您可以全局删除所有空格和点,然后尝试匹配一个正则表达式,该正则表达式是
^[:digit:]{8,15}$

正则表达式尝试:

^(?:[ .]*\d){8,15}[ .]*$
这将匹配8到15位数字,任意数量的空格或点出现在其间

  • 未捕获的组,
    (?:[.]*\d)
    ,匹配前面有任何数量的点或空格的任何数字,
    {8,15}
    确保数字的范围

  • [.]*$
    匹配末尾的任意数量的点或空格

正则表达式尝试:

^(?:[ .]*\d){8,15}[ .]*$
这将匹配8到15位数字,任意数量的空格或点出现在其间

  • 未捕获的组,
    (?:[.]*\d)
    ,匹配前面有任何数量的点或空格的任何数字,
    {8,15}
    确保数字的范围

  • [.]*$
    匹配末尾的任意数量的点或空格


这是一个非常常见的常见问题解答。通常的建议是去掉不重要的标点符号,然后对剩余的数字字符串进行简单的长度检查。这是一个非常常见的常见问题解答。通常的建议是去掉不重要的标点符号,然后对剩余的数字字符串进行简单的长度检查。