名称和标准化

本规范定义了包和额外内容的名称必须遵循的格式。它还描述了如何对它们进行标准化,这应该在查找和比较之前完成。

名称格式

有效名称只能包含 ASCII 字母和数字、句点、下划线和连字符。它必须以字母或数字开头和结尾。这意味着有效的项目名称仅限于与以下正则表达式匹配的名称(使用 re.IGNORECASE 运行)

^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])\Z

名称标准化

名称应小写,并将字符 .-_ 的所有连续出现替换为单个 - 字符。这可以使用 Python 的 re 模块实现

import re

def normalize(name):
    return re.sub(r"[-_.]+", "-", name).lower()

这意味着以下名称都是等效的

  • friendly-bard (标准化形式)

  • Friendly-Bard

  • FRIENDLY-BARD

  • friendly.bard

  • friendly_bard

  • friendly--bard

  • FrIeNdLy-._.-bArD (一种糟糕的命名方式,但它是有效的)

历史

  • 2015 年 9 月:名称标准化规范通过 503 批准。

  • 2015 年 11 月:有效名称规范通过 508 批准。

  • 2025 年 8 月:建议的名称验证正则表达式已修复,以匹配字段规范(它以前以 $ 而不是 \Z 结尾,错误地允许了尾随换行符)