SSH Public Key in JS
Match SSH public keys in OpenSSH `authorized_keys` format, including the optional comment field.
Try it in the JS tester →Pattern
regexJS
ssh-(?:rsa|dss|ed25519|ecdsa-sha2-nistp(?:256|384|521))\s+[A-Za-z0-9+\/=]+(?:\s+\S+)? (flags: g)JavaScript / ECMAScript code
jsJavaScript
const re = new RegExp("ssh-(?:rsa|dss|ed25519|ecdsa-sha2-nistp(?:256|384|521))\\s+[A-Za-z0-9+\\/=]+(?:\\s+\\S+)?", "g");
const input = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBVxr alice@laptop";
const matches = [...input.matchAll(re)];
console.log(matches.map(m => m[0]));Uses `String.prototype.matchAll` for global iteration (Node 12+ / all modern browsers).
How the pattern works
ssh-(?:rsa|dss|ed25519|ecdsa-sha2-nistp(?:256|384|521)) matches the key-type prefix for the four common algorithms. \s+ requires whitespace before the base64 body. [A-Za-z0-9+\/=]+ matches the base64-encoded key material. (?:\s+\S+)? optionally matches a trailing comment (typically `user@host`).
Examples
Input
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBVxr alice@laptopMatches
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBVxr alice@laptop
Input
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABMatches
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB
Input
PRIVATE KEY HERENo match
—