• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

187
Views
How to create a regex for adding single line valid ssh-key

Currently in my application users are able to add multi-line ssh-keys in a field. Also user can paste as many ssh-keys as they want in that field. Right now I have the following regex for this behavior:

const publicSshKeyRegex = /^(ssh-rsa AAAAB3NzaC1yc2|ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNT|ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzOD|ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1Mj|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5|ssh-dss AAAAB3NzaC1kc3)[0-9A-Za-z+/]+[=]{0,3}(\s.*)?(\n|$)/;

But now what I want is that not to allow users to add multi-line ssh-keys and not to allow them to add several ssh-keys. It means that user will be able to add only one ssh-key and it should be in a single line. So the expected behavior would be To add only one ssh-key, single line.

Could anyone help me to create a new regex for new expecting behavior?

about 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

This part in the pattern (\s.*)? optionally matches a whitespace char (that can also match a newline) followed by the rest of the string, allowing for 2 lines to be matched.

If you want a single line only, you can omit that part, and add .* to match the rest of the line, followed by an optional newline and assert the end of the string.

Doing so, this is part [=]{0,3} becomes optional and the character class [0-9A-Za-z+/]+ can be shortened to match at least a single character.

^(?:ssh-rsa AAAAB3NzaC1yc2|ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNT|ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzOD|ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1Mj|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5|ssh-dss AAAAB3NzaC1kc3)[0-9A-Za-z+/].*\n?$

Regex demo

const regex = /^(?:ssh-rsa AAAAB3NzaC1yc2|ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNT|ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzOD|ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1Mj|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5|ssh-dss AAAAB3NzaC1kc3)[0-9A-Za-z+/].*\n?$/;
[
  "ssh-rsa AAAAB3NzaC1yc2a",
  "ssh-rsa AAAAB3NzaC1yc2a\n",
  "ssh-rsa AAAAB3NzaC1yc2a\ntest\n"
].forEach(s => console.log(`${s} --> ${regex.test(s)}`));

about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error