Javascript 我们如何使用正则表达式验证CSR的格式
我目前正试图通过javascript正则表达式验证CSRformat,但我目前仍使用此正则表达式:Javascript 我们如何使用正则表达式验证CSR的格式,javascript,regex,csr,Javascript,Regex,Csr,我目前正试图通过javascript正则表达式验证CSRformat,但我目前仍使用此正则表达式: ^(-----开始新证书请求----(.[\r\n])+(----结束新证书请求----)$ 我想要完成的是,我只需要验证 -----开始新的证书申请------ 及 -----结束新证书请求------ 因此,除空格或enter空格外,下面的任何内容都将无效 这也必须是无效的: ----开始新证书请求----- 测试 测试 测试 测试 -----结束新证书请求----- -----开始新
^(-----开始新证书请求----(.[\r\n])+(----结束新证书请求----)$
我想要完成的是,我只需要验证
-----开始新的证书申请------
及
-----结束新证书请求------
因此,除空格或enter空格外,下面的任何内容都将无效
这也必须是无效的:
----开始新证书请求-----
测试
测试
测试
测试
-----结束新证书请求-----
-----开始新证书请求-----
测试
测试
测试
测试
-----结束新证书请求------
您可以使用此版本的regex,仅在第一个开始/结束块是此类唯一块的情况下才能捕获第一个开始/结束块:
^(?:(?!-{3,}(?:BEGIN|END) NEW CERTIFICATE REQUEST)[\s\S])*(-{3,}BEGIN NEW CERTIFICATE REQUEST(?:(?!-{3,}END NEW CERTIFICATE REQUEST)[\s\S])*?-{3,}END NEW CERTIFICATE REQUEST-{3,})(?![\s\S]*?-{3,}BEGIN NEW CERTIFICATE REQUEST[\s\S]+?-{3,}END NEW CERTIFICATE REQUEST[\s\S]*?$)
看
编辑:
为了确保我们只在末尾匹配,您可以使用较短的正则表达式,并使用可选空格:
^(?:(?!-{3,}(?:BEGIN|END) NEW CERTIFICATE REQUEST)[\s\S])*(-{3,}BEGIN NEW CERTIFICATE REQUEST(?:(?!-{3,}BEGIN NEW CERTIFICATE REQUEST)[\s\S])*?-{3,}END NEW CERTIFICATE REQUEST-{3,})\s*$
请参见尝试使用该正则表达式:
^(?:\s|\R)*(?:-----BEGIN NEW CERTIFICATE REQUEST-----)(?<request>(?:.*\R)+)(?:-----END NEW CERTIFICATE REQUEST-----)(?:\s|\R)*$
^(?:\s |\R)*(?:----开始新证书请求-------(?:.*\R)+(?:----结束新证书请求-------(?:\s |\R)*$
虽然正则表达式检查很有用,但最好实际尝试对证书进行解码 下面是一个这样做的示例:
我也测试了这个,我想这也有同样的结果——我想我需要更新我的问题——如果正则表达式重复开始和结束标记,它一定也是无效的。我也测试了这个,我想这也有同样的结果——我想我需要更新我的问题——如果正则表达式重复开始和结束标记,它一定也是无效的结束tags@MarkBautista:请检查其他更新。如果它对您有效,我将提供更多关于所用正则表达式的解释。另外,请随意用您的示例在regex101上展示我的演示。太棒了!冷静的回答!我做了一些小的修改,因为我意识到它必须是“开始证书请求”/“结束证书请求”(没有“新建”)