电子邮件的 RFC 2282 具有以下用于引用字符串的 ABNF。
quoted-string = [CFWS]
DQUOTE *([FWS] qcontent) [FWS] DQUOTE
[CFWS]
我用谷歌搜索,发现
CFWS
是注释、折叠、空白。我知道什么是空格,但不知道电子邮件地址中的 ABNF 的注释和折叠是什么。
还有
[FWS]
里面的*()
是什么意思?双引号可以出现 0 次或多次 qcontent
,前面有折叠和空格?
这非常令人困惑。非常感谢了解 ABNF 的参考资料。
这不是通用 ABNF 语法的一部分(当前在 RFC 5234 中定义,尽管 RFC 2234 是编写 RFC 2282 时正在使用的 ABNF 定义)。相反,
FWS
和 CFWS
是电子邮件 RFC 本身中定义的特殊标记(请参阅 RFC 2822 的第 3.2.3 节,或 RFC 5322 的第 3.2.2 节,后者于 2008 年废弃了 RFC 2822)。
来自 RFC 5322:
2.2.3。长标题字段
每个标头字段逻辑上都是一行字符 由字段名称、冒号和字段主体组成。为了 不过方便,处理998/78字符 每行的限制,标题字段的字段主体部分可以是 分成多行表示;这称为“折叠”。 一般规则是,只要本规范允许 折叠空白(不仅仅是 WSP 字符),CRLF 可能是 插入任何 WSP 之前。
例如标头字段:
Subject: This is a test
可以表示为:
Subject: This is a test
...
从这种折叠的多行表示移动的过程 将标头字段转换为其单行表示形式称为 “展开”。只需删除任何 CRLF 即可完成展开 紧随其后的是 WSP。每个标头字段应该是 以展开的形式进行进一步的句法和语义处理 评估。展开的标头字段没有长度限制,并且 因此可能会不确定长。
...
3.2.2。折叠空白和注释
空白字符,包括折叠中使用的空白 (在第 2.2.3 节中描述),可能出现在中的许多元素之间 标头字段主体。此外,字符串被视为 评论可以作为字符包含在结构化字段主体中 括在括号中。下面定义折叠白 空格(FWS)和注释结构。
考虑用括号括起来的字符串 注释只要它们不出现在“引用字符串”中,如 定义于节 3.2.4。评论可能会嵌套。
本规范中有几处注释和 FWS可以自由插入。为了适应该语法, “CFWS”的附加标记是为评论的地方定义的 和/或 FWS 可能发生。然而,CFWS 发生的地方 规范,它不得以任何行的方式插入 折叠标头字段的 完全由 WSP 字符组成并且 没有别的了。
FWS = ([*WSP CRLF] 1*WSP) / obs-FWS ; Folding white space ctext = %d33-39 / ; Printable US-ASCII %d42-91 / ; characters not including %d93-126 / ; "(", ")", or "\" obs-ctext ccontent = ctext / quoted-pair / comment comment = "(" *([FWS] ccontent) [FWS] ")" CFWS = (1*([FWS] comment) [FWS]) / FWS
在本规范中,FWS(折叠空白) token)出现,它表示折叠的地方,如中讨论的 注释通常用在结构化字段正文中,以提供一些信息 人类可读的信息文本。既然允许发表评论 包含 FWS,注释中允许折叠。另请注意 由于注释中允许使用引号对,因此括号和 反斜杠字符可能会出现在注释中,只要出现 作为引用对。从语义上讲,括弧不是 评论的一部分;评论是两者之间包含的内容 括号。如前所述,任何引用对中的“”和 注释中出现的任何 FWS 中的 CRLF 在语义上都是 “看不见”,因此也不属于评论的一部分。a 中的词汇标记之间发生的 FWS、注释或 CFWS 运行
结构化标头字段在语义上被解释为单个空格 性格。