【发布时间】:2022-01-07 22:19:14
【问题描述】:
我正在使用正则表达式来匹配这组数字:
xxxx xxx xxxx
01 xxx xxxx
+234 1 xxx xxxx
xxxx-xxx-xxxx
xxxxxxxxxxx
234 xxx xxx xxxx
234(xxx)xxx-xxxx
234(xxx)xxx xxxx
+234(xxx)xxx xxxx
+234(xxx) xxx xxxx
+234(xxx)xxx-xxxx
234xxxxxxxxxx
+234xxxxxxxxxx
规则是:
- 最多 11 位数字(任何数字组合,不包括静态部分)
- 可选 (234) 或 (+234)
- 可选 1 或 01 或 234 1
- 如上所述的可选括号。
这是为了验证尼日利亚电话号码系统。我进行了广泛的搜索,到目前为止还没有看到任何好的解决方案。
我有这样的表达方式:
/^(\+)?234[0-9]*?.*/gm
但它与没有 (234) 的不匹配。
具体来说:
xxxx xxx xxxx
01 xxx xxxx
xxxx-xxx-xxxx
xxxxxxxxxxx
我怎样才能做到这一点?我对正则表达式有点陌生,如果能得到任何帮助,我将不胜感激。
【问题讨论】:
-
您的示例长度通常不是 11 位数。我们应该怎么做?
-
最多 11 位数字(任何数字组合,不包括静态部分)- 已编辑
-
目前还不清楚,这意味着,我(或者,我相信任何人)都无法给出明确的答案。试试regex101.com/r/I9CiSe/1,“try-this-or-that”是我们现在可以使用的唯一方法,但请注意它对 SO 没有什么意义,我们希望建立一个明确的可重用问题和答案的 F&Q 基础。跨度>
-
@WiktorStribiżew 我在这里比较新。下次我会尽量遵守规则。感谢您的理解,无论如何,您的回答就是我(和很多人)所需要的。谢谢。
标签: php regex pcre phone-number