我们遇到了以下规则的验证,
第一个字符应始终为“0”或“+46”或“0046”
长度应介于8 - 20之间(包括+如果有)
并阻止以下号码,
(0900x,+ 46900x,0046900x)。
(0939x,+ 46939x,0046939x)。
(0944x,+ 46944x,0046944x)。
(099x,+ 4699x,00469x)。
你能帮助我创建正则表达式,我尝试在https://regex101.com/上创建和测试它,但我很难创建它。
答案 0 :(得分:0)
我想最简单的方法是
^(?:0|\+46|0046)(?:900|939|944|99)
首先检查国家/地区代码或0
之前,然后检查区号的4种组合。
修改强>
如果您希望数字不符合您的规则,您可以尝试使用否定的预测:
^(?!(?:0|\+46|0046)(?:900|939|944|99)).*
或没有否定的预测:
^(?:[^0+]|0[^09]|\+[^4]|\+4[^6]|(?:\+46[^9])|(?:0046[^9])).*$
修改2
好的,我们再来一次;)
这结果很艰难。但是我们走了:
^(?=.{8,20}$)(?>\+46|0046|0(?!0))(?!900|939|944|99)\+?\d*
00
也进行了更改,因此它只允许数字(以及开头的可选+
)。