您好,请帮我纠正我的正则表达式以检测数字

时间:2015-01-10 04:08:15

标签: php regex numbers

[a-z\%\/\-\(\)\s]?\d{3}[a-z\%\/\-\(\)\s]?\d{3}[a-z\%\/\-\(\)\s]?\d{4}[a-z\%\/\-\(\)\s]?

我的上面的正则表达式是我想出来的。但我需要能够检测到更多数字模式的东西,然后,一旦数字匹配,删除行中的所有其他文本,字母,字符,但删除数字。下面是我的正则表达式。

我真的需要帮助,这一直在寻找。

https://www.regex101.com/r/hT5eD9/1

固定

3 个答案:

答案 0 :(得分:3)

你可以采用这种方法:

匹配1个或更多个非数字,后面跟着数字,以检测数字之间的非数字并删除它们。

使用此正则表达式:

(?<=\d)[^\d\n]+(?=\d)

RegEx Demo

<强>代码:

$result = preg_replace("~(?<=\\d)[^\\d\\n]+(?=\\d)~", '', $input);

答案 1 :(得分:0)

这个怎么样?

<? 
if(is_numeric($str)){
    //str is a number
}

答案 2 :(得分:0)

试试这个:正则表达式([^\d\s]+|\s\d{1,2}[\s\,])*(\d{3}[^\d\n]*\d{3}[^\d\n]*\d{4})*([^\d\s]+|\s\d{1,2}[\s\,])*

您搜索([^\d\s]+|\s\d{1,2}[\s\,])*(\d{3}[^\d\n]*\d{3}[^\d\n]*\d{4})*([^\d\s]+|\s\d{1,2}[\s\,])*并替换为$2。它适用于你的病情。

<强>更新

Live demo