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

0

181
Views
Cómo crear una expresión regular para agregar una clave ssh válida de una sola línea

Actualmente, en mi aplicación, los usuarios pueden agregar teclas ssh de varias líneas en un campo. Además, el usuario puede pegar tantas teclas ssh como desee en ese campo. En este momento tengo la siguiente expresión regular para este comportamiento:

 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|$)/;

Pero ahora lo que quiero es no permitir que los usuarios agreguen claves ssh de varias líneas y no permitirles agregar varias claves ssh. Significa que el usuario podrá agregar solo una tecla ssh y debe estar en una sola línea. Entonces, el comportamiento esperado sería Agregar solo una tecla ssh, una sola línea.

¿Alguien podría ayudarme a crear una nueva expresión regular para un nuevo comportamiento de espera?

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

0

¿Esta parte del patrón (\s.*)? opcionalmente coincide con un carácter de espacio en blanco (que también puede coincidir con una nueva línea) seguido del resto de la cadena, lo que permite que coincidan 2 líneas.

Si solo desea una línea, puede omitir esa parte y agregar .* para que coincida con el resto de la línea, seguido de una nueva línea opcional y afirmar el final de la cadena.

Al hacerlo, esta parte [=]{0,3} se vuelve opcional y la clase de carácter [0-9A-Za-z+/]+ se puede acortar para que coincida con al menos un solo carácter.

 ^(?: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?$

Demostración de expresiones regulares

 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)}`));

almost 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