我正在做一个正则表达式来匹配这组数字:
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这些规则是:
这是为了验证尼日利亚的电话号码系统。我找了很远很远的地方,到目前为止还没有找到任何好的解决方案。
我有这样的表达:
/^(\+)?234[0-9]*?.*/gm但它并不能与没有(234)的完全匹配。
具体地说:
xxxx xxx xxxx
01 xxx xxxx
xxxx-xxx-xxxx
xxxxxxxxxxx我怎么才能把这事做好?我对雷吉斯有点陌生,希望能得到任何帮助。
发布于 2021-12-01 12:07:03
您可以使用
^(?:(?:(?:\+?234(?:\h1)?|01)\h*)?(?:\(\d{3}\)|\d{3})|\d{4})(?:\W*\d{3})?\W*\d{4}$见regex演示。详细信息
^ -字符串的开始(?:(?:(?:\+?234(?:\h1)?|01)\h*)?(?:\(\d{3}\)|\d{3})|\d{4}):(?:(?:\+?234(?:\h1)?|01)\h*)? -可选的出现(?:\+?234(?:\h1)?|01) -一个可选的+,然后是234选项,后面跟着水平空格和1,或01。\h* --零或多个水平空白空间- `(?:\(\d{3}\)|\d{3})|` - `(`, three digits, `)` or three digits, or
- `\d{4}` - four digits(?:\W*\d{3})? -一个可选的零或多个非字字符序列,然后是3位数字。\W* -零或多个非字字符\d{4} -四位数$ -字符串的末端。若要在较长字符串中的任何位置匹配电话号码,请使用
(?:(?:(?:\+?234(?:\h1)?|01)\h*)?(?:\(\d{3}\)|\d{3})|\d{4})(?:\W*\d{3})?\W*\d{4}(?!\d)见regex演示。
发布于 2021-12-01 10:20:16
简单的东西,如:
$output = trim(filter_var($input, FILTER_SANITIZE_NUMBER_INT), '+'); 您将只剩下数字。现在,您可能要删除几个可选的启动:
$output = preg_replace('/^0|^01|^234|^2341/', '', $input);最后,您可能需要检查长度是否有效。
这并不会使'+234(123) (456) 7890‘这样的数字失效,但它应该这样做吗?毕竟,你只能拨号码。
https://stackoverflow.com/questions/70182264
复制相似问题