正则表达式定义两个允许列表 characters/digits

Regex define two lists of allowed characters/digits

我正在研究 phone 数字正则表达式,这是我目前所拥有的:^[0-9~+ ]{8,20}$

它允许 0 到 9 之间的数字,也允许“+”和空格。范围必须在 8 到 20 之间。这很好用。

我进一步想要的是只有 8 到 20 个数字,其中“+”和空格与它们分开。

像这样:^[+ ]\d{8,20}$

建议?

怎么样:

^(?:[+ ]*\d){8,20}$

这将匹配前面有或没有 + 或 space 的 8 到 20 个数字。

如果+只能在beginig:

^[+]?(?:[ ]*\d){8,20}$