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

Php 您好,请帮我更正我的正则表达式以检测数字,php,regex,numbers,Php,Regex,Numbers,我上面的正则表达式就是我想到的。但我需要一种能够检测出更多数字模式的东西,然后,一旦数字匹配,删除行中除数字以外的所有其他文本、字母、字符。下面是我的正则表达式 我真的需要帮助,我一直在寻找 固定的您可以采取以下方法: 匹配1个或多个非数字,然后在每侧数字后面加上数字,以检测数字之间的非数字并将其删除 使用此正则表达式: [a-z\%\/\-\(\)\s]?\d{3}[a-z\%\/\-\(\)\s]?\d{3}[a-z\%\/\-\(\)\s]?\d{4}[a-z\%\/\-\(\)\s]?

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

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


固定的

您可以采取以下方法:

匹配1个或多个非数字,然后在每侧数字后面加上数字,以检测数字之间的非数字并将其删除

使用此正则表达式:

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

这个怎么样

$result = preg_replace("~(?<=\\d)[^\\d\\n]+(?=\\d)~", '', $input);
试试这个:正则表达式模式[^\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。它对你的情况有效

更新:


您能举一个您试图检测的数字模式的例子吗?在上面的链接中。我能和一些人相配,但不是全部。然后我需要删除除匹配的以外的所有内容。电话号码?我将尝试下列方法:\d{3}\d?\d{3}\d?\d{4}-3个数字,后跟一个可选的非数字字符,再后跟3个数字,后跟另一个可选的非数字字符,最后4个数字。谢谢,但是如何替换除上述正则表达式之外的所有内容?搜索匹配项并用这些匹配项构建一个全新的字符串。忘记所有其他的东西。OP需要正则表达式。谢谢,但是除了上面的正则表达式代码之外,我如何替换所有的东西呢?我已经给了你preg_替换代码。你希望得到什么样的输出?我应该把代码放在哪里?我试着用记事本++来做这件事。你把你的问题标记为php,现在问我如何用记事本++来做?我已经为您提供了一个PHP代码和一个可以在任何地方使用的正则表达式演示。很抱歉,我希望它能在记事本++中使用。是的,但这类似于[^0-9\n]。您的代码保留多余的、不需要的号码,这些号码不是电话号码的一部分。您的输入和输出示例是什么?我想在记事本++中使用这段代码,\d{3}\d?\d{3}\d?\d{4},但要替换为什么?
$result = preg_replace("~(?<=\\d)[^\\d\\n]+(?=\\d)~", '', $input);
<? 
if(is_numeric($str)){
    //str is a number
}