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

标签 php regex preg-match

我想要一个正则表达式来验证员工 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 和可选数字
  • ) 关闭非捕获组
  • $ 字符串结尾

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

关于php - 用于验证员工 ID 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68516656/

相关文章:

javascript - RegExp 连续检测到多个单字母实例?

PHP从第一个数字(整数) explode

php - Preg_match 从一些数字中删除最后的零

php - 随机帖子毁了我的 WordPress 评论部分

php - Zend Layout 中的 $this 变量

php - 如何在AWS Elastic Beanstalk Docker容器中记录PHP错误

php - Laravel UUID 及其独特性?

regex - 在D中使用std.regex库,如何匹配点?

python - 使用perl或python将阿拉伯字符 "ا"替换为一个单词中的 "a",但替换为另一个单词中的 "ә"

php 从字符串中提取表情符号