我需要从不同的文本文件中提取一个8位数字。问题是每个数字之前和之后可能有或可能没有空格,如下所示。
每个客户放置空间,但它认为它使数字更具可读性,因此提取它的问题。
33113306
33 11 33 06
3311 3306
可能有超过8位的数字。那些应该被忽略。例如。
33 11 33 06 //the number we need
28 232392 93293293923 // the number we don't need
在第一个数字之前总是有一个空格。 我们需要的8位数字放在“单词”或其他字符之间。但是有时候我们会在新线上有新词。例如。 这是一个数字
Al : 33 11 33 06 ,
Another number we don't need 232 2323 232 2, ..sdsad
我正在使用带有preg_match的PHP,而我的旧正则表达式失败,因为这个新的“功能”允许客户端以不同的形式定义数字。
^(\d){8}$
答案 0 :(得分:1)
您可以删除非数字字符,并获取字符串的前8个字符:
echo substr(preg_replace("/[^0-9,.]/", "", $string), 0, 8);
答案 1 :(得分:1)
您可以使用PHP的filter_var
函数来过滤掉除数字,加号和减号之外的所有内容。然后使用str_replace
删除减号和加号(如果有的话):
$string=str_replace("+","",str_replace("-","",filter_var($string, FILTER_SANITIZE_NUMBER_INT)));
if(strlen($string)!=8){
echo "Error";
} else {
echo "Success";
}
答案 2 :(得分:0)
答案 3 :(得分:0)
[^ \d]+(\d\s*){8}[^ \d]+
试试这个