【问题标题】:ssh-key public regex validationssh 密钥公共正则表达式验证
【发布时间】:2022-01-10 00:47:22
【问题描述】:

我有以下问题我正在尝试对 ssh-keys(公共)进行验证,以便客户必须给我一个真正的 ssh-key。有人可以告诉我如何制作“正则表达式”以使其正确吗?我有这样的东西:ssh-rsa AAAA[0-9A-Za-z+/]+[=]{0,3} ([^@]+@[^@]+)# 但这不起作用。错误:preg_match(): Delimiter must not be alphanumeric or backslash

【问题讨论】:

    标签: javascript php regex ssh-keys


    【解决方案1】:

    您的正则表达式可能没问题。您应该在正则表达式中使用 分隔符

    $regex = '/ssh-rsa AAAA[0-9A-Za-z+\/]+[=]{0,3} ([^@]+@[^@]+)#/'
    

    【讨论】:

    • / 是分隔符
    • 那么问题来了preg_match(): Unknown modifier ']'
    • 转义正则表达式中的/ ` $regex = '/ssh-rsa AAAA[0-9A-Za-z+\/]+[=]{0,3} ([ ^@]+@[^@]+)#/' ` 或者使用非字母数字或反斜杠且不在正则表达式中的分隔符
    • 我现在有它/ssh-rsa AAAA[0-9A-Za-z+\/]+[=]{0,3} ([^@]+@[^@]+)#/ 但它说The key format is invalid. 我用过这个ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJhe,06LaPXiCTQLVf2Dq5RPnz2Gzx0rDybRKQPUhzByhm test@local.host
    • 如果你想知道发生了什么:在分隔符之后你可以添加修饰符(比如不区分大小写的搜索i,因为以/开头的字符串你的分隔符是/。因为你的分隔符中有一个/正则表达式,它停在那里并尝试读取修饰符,其中第一个是 ],它不是修饰符。