[英]I need help applying a limit to a Regular expression on php
我试图找到一个仅包含8个数字的数字,这是我已经拥有的代码:
preg_match_all("/([0-9]{8})/", $string, $match)
但这会从长度超过8位的数字字符串中提取8个数字
任何帮助将不胜感激
谢谢
我将使用\\d
而不是[0-9]
。
使用^
和$
分别匹配字符串的开头和结尾:
preg_match_all('/^(\d{8})$/', $string, $match)
快速但有点野蛮的方法:
使用\\D
( [^0-9]
)匹配“非数字”:
preg_match_all('/^|\D(\d{8})\D|$/', $string, $match)
先行/先行可能会更好:
preg_match_all('/(?<!\d)(\d{8})(?!\d)/', $string, $match)
你需要单词边界
/\b[0-9]{8}\b/
例:
$string = '34523452345 2352345234 13452345 45357567567567 24573257 35672456';
preg_match_all("/\b[0-9]{8}\b/", $string, $match);
print_r($match);
输出:
Array
(
[0] => Array
(
[0] => 13452345
[1] => 24573257
[2] => 35672456
)
)
这可能比其他两个建议更好:
preg_match_all('/(?<!\d)(\d{8})(?!\d)/', $string, $match)
注意\\d
等效于[0-9]
。
也许在数字前后都包含数字。
preg_match_all("/[^\d]([\d]{8})[^\d]/", $string, $match)
preg_match_all("/(?:^|\D)(\d{8})(?:\D|$)/", $string, $match);
其中开始和结束不匹配组(?:)允许字符串的任何非数字(\\ D)或字符串的开始(^)或结束($)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.