我正在尝试编写一个符合以下条件的正则表达式(用于java)(这是一种特定的电话格式)
我知道如何做1),2a),2b)。还没试过2c。但我有严重的问题3)。 我已经以某种方式限制[0-9]的外观,但它检查相同数字的外观,我想限制任何数字的数量。
该尝试基于: Limit number of alpha characters in regular expression
欢迎任何想法:)
答案 0 :(得分:0)
使用前瞻,这应该为你做到:
^(?=[^\d\n]*(?:\d[^\d\n]*?){8,20}$)(?!.*[-#][-#])\+?[\d][\d#-]+[\d]$
它以正向前视开始,检查8到20个重复的数字,然后是任意数量的非数字重复。这可以选择在任意数量的非数字之前。这是对数字位数的验证。
然后有一个负面的预测断言没有任何重复的连字符或散列符号(捕获一个后跟一个后引用=连续两个)。
最后它允许一个可选的+
,之后它只是对任意数量的重复数字,连字符和井号的测试。
Check the examples here at regex101
修改强>
修改正则表达式以处理案例2b,以及2c,其中一个直接跟随另一个(-#
或#-
)。