我有一个正则表达式来替换我的变量之一中的所有非单词字符,下划线或空格,以清理名称以将其传递给Route53。
它将替换非字母数字和下划线,但会卡在空格上。
我知道正则表达式是\s
的空白,但是当Terraform计划运行时,它似乎忽略了它,但是如果我通过正则表达式检查器运行它,则可以正常工作。
identifier = "qa-${lower(replace(var.dns_name,"/\\W|_|\\s/","-"))}"
答案 0 :(得分:1)
我在Terraform v0.12.21中使用了您的正则表达式,并用空格和各种特殊字符对其进行了测试:
dns_name = "abc DEF 123 ~'`!@#$%^&*()_+-=[]\\{}|;':\\./<>?\"\\'.com"
identifier = "${lower(replace(var.dns_name,"/\\W|_|\\s/","-"))}"
和terraform plan
表明正则表达式正确地用连字符代替了字母,数字或连字符,这似乎是Route 53所需要的:
"abc-def-123-------------------------------------com"
但也请注意,域名可能不能包含两个连续的连字符(请参见here)。