如何更正用于检测数字的正则表达式


How can I correct my regex for detecting 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

您可以采用以下方法:

匹配 1 个或多个后跟两侧数字的非数字,以检测数字之间的非数字并将其删除。

使用此正则表达式:

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

正则表达式演示

法典:

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

这个怎么样?

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

试试这个: 正则表达式模式 ([^'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 . 它将适用于您的条件。

更新:

现场演示