我想要一个正则表达式来验证员工 ID,它们是 UC-00001, UC-00012, UC-000100。等等
“UC-000”是常数,但此后如果存在一位数字,则变为 UC-00001,如果存在更多的一位数字,则只需三个零即可保持不变。(UC-00010)
我尝试使用 preg_match(/[U]{1}[C]{1}-[0]{3}[0-9]$/)
但无法正确验证。
提前致谢
最佳答案
您可以匹配三个零,然后从 00 到 09 或从 10 开始..
^UC-000(?:0\d|[1-9]\d*)$
模式匹配:
^
字符串开头UC-000
按字面意思匹配(?:
非捕获组0\d
匹配 0 和单个数字 0-9(或使用[1-9]
不匹配 00000)|
或者[1-9]\d*
匹配数字 1-9 和可选数字
)
关闭非捕获组$
字符串结尾
$strings = [
"UC-00001",
"UC-00012",
"UC-000100",
"UC-00001",
"UC-00010",
"UC-00000",
"UC-000010",
"UC-0000100"
];
$pattern = "~^UC-000(?:0\d|[1-9]\d*)$~";
foreach ($strings as $s) {
if (preg_match($pattern, $s)) {
echo "Match: $s" . PHP_EOL;
} else {
echo "Not match: $s" . PHP_EOL;
}
}
输出
Match: UC-00001
Match: UC-00012
Match: UC-000100
Match: UC-00001
Match: UC-00010
Match: UC-00000
Not match: UC-000010
Not match: UC-0000100
关于php - 用于验证员工 ID 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68516656/