Start · Sprachen · JavaScript · Referenz · URLPattern.username

URLPattern.username

Eigenschaft

Schreibgeschützter String mit dem normalisierten Muster, mit dem ein <code>URLPattern</code> den Benutzernamen-Teil einer URL abgleicht.

seit JavaScript Chrome/Edge 95+, Firefox 142+, Safari 26+ (Baselin Kategorie: webapi

Signatur

URLPattern.username

Beschreibung

Die Eigenschaft username gibt das Muster zurück, das ein URLPattern für den Benutzernamen einer URL verwendet, also für den Teil vor dem Doppelpunkt bzw. dem @ in https://benutzer:passwort@example.com. Der Wert ist schreibgeschützt. Er wird beim Erzeugen des Musters festgelegt und in eine normalisierte Form gebracht.

Wurde beim Konstruktor kein Benutzernamen-Muster angegeben, enthält die Eigenschaft den Platzhalter "*". Das Muster passt dann auf jeden Benutzernamen, auch auf einen leeren. Username und Passwort werden außerdem nie aus einer Basis-URL (baseURL) übernommen.

Nützlich ist die Eigenschaft vor allem, wenn man ein Muster prüfen oder protokollieren will, etwa beim Debuggen eines Routers. Außerdem kann man damit nachvollziehen, wie Syntax wie benannte Gruppen (:user) oder reguläre Ausdrücke ((\\w+)) normalisiert wurde. Das Ergebnis eines Abgleichs mit den eingefangenen Gruppen liefert URLPattern.prototype.exec() unter result.username.

Rückgabewert

Typ
string
Beschreibung
Das normalisierte Muster für den Benutzernamen, z. B. "admin", ":user" oder "*", wenn kein Muster angegeben wurde.

Beispiele

Muster auslesen: angegeben vs. Standardwert

const mitUser = new URLPattern({ username: 'admin', hostname: 'example.com' });
const ohneUser = new URLPattern({ hostname: 'example.com' });

console.log(mitUser.username);
console.log(ohneUser.username);
admin *

Nur URLs mit bestimmtem Benutzer zulassen

const pattern = new URLPattern({
  protocol: 'https',
  username: 'deploy',
  hostname: 'git.example.com'
});

console.log(pattern.test('https://deploy:geheim@git.example.com/repo'));
console.log(pattern.test('https://gast@git.example.com/repo'));
true false

Benutzernamen per benannter Gruppe extrahieren

const pattern = new URLPattern({ username: ':user', hostname: '*.example.com' });
console.log(pattern.username); // Muster selbst

const result = pattern.exec('ftp://alice:pw@files.example.com/');
console.log(result?.username.input);
console.log(result?.username.groups.user);
:user alice alice

Nur Buchstaben per regulärem Ausdruck zulassen

const pattern = new URLPattern({ username: '([a-z]+)' });

console.log(pattern.username);
console.log(pattern.test('https://bob@example.com/'));
console.log(pattern.test('https://bob42@example.com/'));
([a-z]+) true false

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie pattern.username = 'x' wird ignoriert (im Strict Mode gibt es einen TypeError). Um das Muster zu ändern, muss man ein neues URLPattern erzeugen.
  • Standardwert "*": Ohne Angabe passt jeder Benutzername, auch gar keiner. Wer URLs mit Zugangsdaten ausschließen will, muss ausdrücklich username: '' angeben.
  • Keine Übernahme aus baseURL: Username und Passwort werden anders als Protokoll oder Host nicht aus der Basis-URL geerbt.
  • Normalisierung: Der zurückgegebene String kann vom Eingabewert abweichen, z. B. durch Prozent-Kodierung von Sonderzeichen.
  • Sicherheit: Zugangsdaten in URLs gelten als veraltet und unsicher. Browser blockieren sie oft (etwa bei Unterressourcen) oder zeigen Warnungen an. Man sollte sich nicht auf sie verlassen und sie nie protokollieren.
  • Kompatibilität: URLPattern gibt es in Chromium seit Version 95. Firefox (142) und Safari (26) unterstützen es erst seit Kurzem. In Node.js ist es ab Version 23.8 global verfügbar. Für ältere Umgebungen gibt es das Polyfill urlpattern-polyfill.