Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要一个PHP正则表达式来验证手机号码和地址字段_Php_Regex - Fatal编程技术网

需要一个PHP正则表达式来验证手机号码和地址字段

需要一个PHP正则表达式来验证手机号码和地址字段,php,regex,Php,Regex,我需要一个正则表达式来验证手机号码和地址字段,但输入来自PSV文件(管道符号分隔值),即 此输入将转换为以下格式: 86082522|801213075672|NRIC|013333344444|SYED ZEESHAN||0107777777|0000000000|||||NO 3046|ROAD 12 MK.7$14000$,HEALE,PNG$PNG$||SHAID ABAD PAKPATAN|KALA|URB5467||8827|20151029|29/10/2015|28/12/201

我需要一个正则表达式来验证手机号码和地址字段,但输入来自PSV文件(管道符号分隔值),即

此输入将转换为以下格式:

86082522|801213075672|NRIC|013333344444|SYED ZEESHAN||0107777777|0000000000|||||NO 3046|ROAD 12 MK.7$14000$,HEALE,PNG$PNG$||SHAID ABAD PAKPATAN|KALA|URB5467||8827|20151029|29/10/2015|28/12/2015|113.1000||BHALWAPUR RAWAPALNI KKOTA BANU|||
现在这个输入是正确有效的,但如果一些用户忘记添加移动地址字段和地址字段,那么不允许将其保存在数据库中,现在我将转到无效移动号码字段的示例

86082522|801213075672|NRIC|013333344444|SYED ZEESHAN||8@#-777777|0000000000|||||NO 3046|ROAD 12 MK.7$14000$,HEALE,PNG$PNG$||SHAID ABAD PAKPATAN|KALA|URB5467||8827|20151029|29/10/2015|28/12/2015|113.1000||BHALWAPUR RAWAPALNI KKOTA BANU|||
上面的例子是无效的手机号码,因为它也包含一些字符。所以我需要一个可以删除这些字符的正则表达式。

好的,这个怎么样

$string = '86082522|801213075672|NRIC|013333344444|SYED ZEESHAN||0111123444443|0000000000|||||NO 3046|ROAD 12 MK.7$14000$,HEALE,PNG$PNG$||SHAID ABAD PAKPATAN|KALA|URB5467||8827|20151029|29/10/2015|28/12/2015|113.1000||BHALWAPUR RAWAPALNI KKOTA BANU|||';
$array = explode('|', $string);
if(preg_match('/^0\d{9,14}$/', $array[6])) {
    echo 'true';
} else {
    echo 'false';
}
Regex101演示:


我们要求字符串以
0
开头,然后有9-14(
{9,14}
)个附加号码(
\d
)。

什么是有效的电话号码/地址?在
|
上分解以获得每个条目。在第6个管道上签名后,开始移动号码字段,您需要更具体地说明这一点。我不知道你期望一个有效的数字是什么。我也不知道你的意思,第六个字段是手机号码。其他领域是什么?手机号码是否总是在第6个插槽中?是的,它总是在第6个插槽中声明,regex应该读取并忽略前6个管道,然后验证输入(手机号码。即始终以0开头,长度为10-15位数)忽略地址验证,现在我只需要手机号码验证。输入文件是psv文件,与csv文件相同,但使用管道而不是逗号。而且手机号码总是在第六个管道标志后出现,永远不会在之前/之后谢谢你这就是我需要的!!但是,如果用户忘记在开始时添加0,那么替换或将0置于开始位置是否也有帮助?i、 e.用户输入111111111,我们可以只在01111111中添加一个0吗?
0
可以通过在其后面添加一个
来进行选择。
使前面的字符成为可选字符。您之前指定的10-15限额中是否包含0?@SyedZac是否成功?
$string = '86082522|801213075672|NRIC|013333344444|SYED ZEESHAN||0111123444443|0000000000|||||NO 3046|ROAD 12 MK.7$14000$,HEALE,PNG$PNG$||SHAID ABAD PAKPATAN|KALA|URB5467||8827|20151029|29/10/2015|28/12/2015|113.1000||BHALWAPUR RAWAPALNI KKOTA BANU|||';
$array = explode('|', $string);
if(preg_match('/^0\d{9,14}$/', $array[6])) {
    echo 'true';
} else {
    echo 'false';
}