Interpretation Email-Syntax in RFC 5322
MudGuard
- sonstiges
Hi,
aus der RFC 5322 hab ich mal ein paar Regeln für den Aufbau einer E-Mail-Adresse rausgezogen:
addr-spec = local-part "@" domain
local-part = dot-atom / quoted-string / obs-local-part
dot-atom = [CFWS] dot-atom-text [CFWS]
dot-atom-text = 1*atext *("." 1*atext)
atext = ALPHA / DIGIT / ; Printable US-ASCII
"!" / "#" / ; characters not including
"$" / "%" / ; specials. Used for atoms.
"&" / "'" /
"*" / "+" /
"-" / "/" /
"=" / "?" /
"^" / "_" /
"`" / "{" /
"|" / "}" /
"~"
Wie muß ich das jetzt interpretieren?
Ich vermute mal, daß / für ein "exklusives oder" steht. local-part kann also entweder ein dot-atom oder ein quoted-string oder ein obs-local-part sein.
Die eckigen Klammern schließen meiner Vermutung nach was ein, was auch wegfallen kann. dot-atom kann also eines von
CFWS dot-atom-text
dot-atom-text
CFWS dot-atom-text CFWS
dot-atom-text CFWS
sein.
Die runden Klammern vermute ich mal als Gruppierung - so daß bei dot-atom-text der * auf "." zusammen mit 1*atext angewendet wird.
1* heißt wohl: mindestens einmal das folgende Konstrukt, und * beliebig oft das folgende Konstrukt.
Damit entspräche dem 1* hier das, was bei Regulären Ausdrücken das + ist, während der * hier und im Regex dieselbe Bedeutung hätte.
Liege ich damit richtig?
cu,
Andreas
Hi,
Liege ich damit richtig?
Ja. Sagt RFC 5234, die ich inzwischen als die zuständige ermitteln konnte ...
cu,
Andreas
Ich vermute mal, daß / für ein "exklusives oder" steht.
Nein, es steht im Gleichen Sinne wie für
Perl: (a|b)+
und das kann sein aaaaa abbaa
local-part kann also entweder ein dot-atom oder ein quoted-string oder ein obs-local-part sein.
ja aber nur deshalb weil gilt
Perl: (a|b|c){1}
Die eckigen Klammern schließen meiner Vermutung nach was ein, was auch wegfallen kann. dot-atom kann also eines von
Ja, sie haben hier die Bedeutung von ()?
Die runden Klammern vermute ich mal als Gruppierung - so daß bei dot-atom-text der * auf "." zusammen mit 1*atext angewendet wird.
1* heißt wohl: mindestens einmal das folgende Konstrukt, und * beliebig oft das folgende Konstrukt.
Damit entspräche dem 1* hier das, was bei Regulären Ausdrücken das + ist, während der * hier und im Regex dieselbe Bedeutung hätte.Liege ich damit richtig?
Soweit ja.
mfg Beat
Hi,
Ich vermute mal, daß / für ein "exklusives oder" steht.
Nein, es steht im Gleichen Sinne wie für
Perl: (a|b)+
und das kann sein aaaaa abbaa
Das bezweifle ich.
Siehe RFC 5234 Abschnitt 3.2:
3\.2. Alternatives: Rule1 / Rule2
Elements separated by a forward slash ("/") are alternatives.
Therefore,
foo / bar
will accept <foo> or <bar>.
local-part kann also entweder ein dot-atom oder ein quoted-string oder ein obs-local-part sein.
ja aber nur deshalb weil gilt
Perl: (a|b|c){1}
Hier widersprichst Du Dir doch selbst - oben soll das / noch für (foo|bar)+ stehen, hier plötzlich für (foo|bar|baz){1}
cu,
Andreas
Hier widersprichst Du Dir doch selbst - oben soll das / noch für (foo|bar)+ stehen, hier plötzlich für (foo|bar|baz){1}
/ ist ein oder im genau gleichen Sinne wie die Pipe in einem RE.
Was aber dieses oder genau bedeutet, hängt vom weiteren Kontext ab.
(a|b)+ ist etwas anderes als (a+|b+)
Nur im letzten Fall erhältst du aaa...a exklusiv oder bbb...b
Im konkret gefragten Fall der Zeichenliste aber ist das / einfach der Trenner zur Definition einer Zeichenklasse.
Exklusiv wird das "oder" in a|b erst, wenn a != b
in a XOR b muss b evaluiert werden. Das ist in einem "Oder" für eine Zeichenklasse oder eine Alternative nicht der Fall.
mfg Beat