Terraform Replace Regex无法正常工作

时间:2018-08-30 12:12:42

标签: regex terraform

我有一个正则表达式来替换我的变量之一中的所有非单词字符,下划线或空格,以清理名称以将其传递给Route53。

它将替换非字母数字和下划线,但会卡在空格上。

我知道正则表达式是\s的空白,但是当Terraform计划运行时,它似乎忽略了它,但是如果我通过正则表达式检查器运行它,则可以正常工作。

identifier        = "qa-${lower(replace(var.dns_name,"/\\W|_|\\s/","-"))}"

1 个答案:

答案 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)。