我试图验证的dns条目很长。下面是该结构的一个示例:
qwer-0123a4bcd567890e1-uuuu3xx.qwer-gfd-1e098765dcb4a3210.ps-sdlk-6.qwer.domain.com
这些条目可以看作是三个不同的部分:
qwer-0123a4bcd567890e1-uuuuu3xx.qwer-gfd-1e098765dcb4a3210.
总是以qwer-开头
接下来是17个字母数字,a-,还有8个字母数字
然后qwer-gfd-
接下来是17个字母数字和a.
ps-sdlk-6
总是以ps-sdlk-开头
后跟一个或两个字母数字在这种情况下,它可以是ps-sdlk-6或类似的ps-sdlk-6e
.qwer.domain.com
域目标始终以.qwer.domain.com结尾
我把一个正则表达式拼凑在一起,发现了这个怪物:
qwer-[\w]{17}-[\w]{8}.qwer-gfd-[\w]{17}.(.*)(qwer.domain.com)
这个解决方案是相当可怕的,它返回多个匹配组,这不给我太多的准确性信心我使用的是Ruby2.5,但在这种情况下,非标准库的内容很难导入。
是否有更合理、完整/准确的regex来确认这些dns目标的有效性没有regex还有更好的方法吗?

最佳答案

我认为考虑到你的输入数据,你别无选择,只有一个丑陋的正则表达式。

^qwer-\w{17}-\w{8}\.qwer-gfd-\w{17}\.ps-sdlk-\w{1,2}\.qwer\.domain\.com$

请注意,我和您一样使用了\w,但是\w也与_和字母数字字符匹配,因此您可能需要将其替换为[A-Za-z0-9]此外,.将匹配任何字符,因此要特别匹配.您需要在regex中\.
Demo on regex101.com

关于ruby - 用于验证长而复杂的dns目标的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53625394/

10-11 10:58