首页 > 解决方案 > 使用正则表达式检查带有破折号的数字

问题描述

如果我需要一个字符串来匹配此模式:“ *- -***”、“123-12-123”、“123-1”,我将如何检查字符串以确保它适合 PHP?

我想确保字符串符合以下任何模式:

"***-**-***"
"123-12-123" (ONLY NUMERIC WITH -)
"123-1" (ONLY NUMERIC WITH -)

标签: phpregex

解决方案


例如,你可以找到所有没有正则表达式的数字


$numbers=sscanf('123-12-123','%d-%d-%d');

print_r($numbers);

输出

Array
(
    [0] => 123
    [1] => 12
    [2] => 123
)

如果你想用正则表达式得到它,你可以用下面的代码来做


$re = '/\d{3}-\d{2}-\d{3}/m';
$str = '123-12-123';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

推荐阅读