用于验证员工 ID 的正则表达式

Regular expression to validate employee id

我想要一个正则表达式来验证员工 ID UC-00001, UC-00012, UC-000100。等等

“UC-000”是常量,但之后如果存在一位数,则变为 UC-00001,如果存在更多 den 一位数,则只需要三个零是常量。(UC-00010)

我尝试使用 preg_match(/[U]{1}[C]{1}-[0]{3}[0-9]$/) 但它没有正确验证。

提前致谢

您的模式在逻辑上是正确的,只是您不允许在前导 000 后使用多个数字。我会使用这个版本:

^UC-[0-9]{5,}$

PHP 脚本:

$input = "UC-000100";
if (preg_match("/^UC-[0-9]{5,}$/", $input)) {
    echo "VALID";
}

您可以匹配三个零,然后匹配从 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 和可选数字
  • )关闭非捕获组
  • $ 字符串结束

Regex demo

$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