Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们如何使用正则表达式验证CSR的格式_Javascript_Regex_Csr - Fatal编程技术网

Javascript 我们如何使用正则表达式验证CSR的格式

Javascript 我们如何使用正则表达式验证CSR的格式,javascript,regex,csr,Javascript,Regex,Csr,我目前正试图通过javascript正则表达式验证CSRformat,但我目前仍使用此正则表达式: ^(-----开始新证书请求----(.[\r\n])+(----结束新证书请求----)$ 我想要完成的是,我只需要验证 -----开始新的证书申请------ 及 -----结束新证书请求------ 因此,除空格或enter空格外,下面的任何内容都将无效 这也必须是无效的: ----开始新证书请求----- 测试 测试 测试 测试 -----结束新证书请求----- -----开始新

我目前正试图通过javascript正则表达式验证CSRformat,但我目前仍使用此正则表达式:

^(-----开始新证书请求----(.[\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上展示我的演示。太棒了!冷静的回答!我做了一些小的修改,因为我意识到它必须是“开始证书请求”/“结束证书请求”(没有“新建”)