可以在一个单词中处理任意数量的星号的正则表达式

时间:2019-06-25 17:19:47

标签: regex ssl-certificate

我正在尝试为x509 CN / SAN验证编写正则表达式,并且刚刚了解到理论上显然可以使用部分通配符。当我要确保它捕获了可能为example.org颁发的所有证书时,如何构建正则表达式来处理此问题?

我天真的做法是

\**e\**x\**a\**m\**p\**l\**e\**.\**o\**r\**g\**

当然不包括可能的子域。但是,这看起来很糟糕,并且确实使该术语夸张的时间超过了我的期望。有没有更简洁的方法来获得我描述的行为?

编辑:我也刚刚意识到,当有人使用星号替换部分域名时,我的天真正则表达式甚至都不会捕获,例如exa * .org。

1 个答案:

答案 0 :(得分:0)

由于我觉得这在简明的正则表达式中不易表达,因此我在围绕我以前的正则表达式检查的Python代码中解决了用例。

我不是将正则表达式映射到证书中显示的域,而是将证书域转换为正则表达式模式,将文字点替换为转义点并将星号替换为[a-zA-Z0-9-]{0,63}。然后,我将其与我管理的域列表进行比较,如果正则表达式匹配,我知道证书适用于托管域。

如果有人设法用简洁的正则表达式表达这一点,我仍然会感兴趣。