regex - Terraform 替换正则表达式无法正常工作
问题描述
我有一个正则表达式来替换我的一个变量中的任何非单词字符、下划线或空格,以清理名称以将其传递给 Route53。
它正在替换非字母数字和下划线,但它卡在空格上。
我知道正则表达式\s
用于空格,但是当 Terraform 计划运行时它似乎忽略了它,但是如果我通过正则表达式检查器运行它,它工作正常。
identifier = "qa-${lower(replace(var.dns_name,"/\\W|_|\\s/","-"))}"
解决方案
我在 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"
但也请注意,域名可能无法包含两个连续的连字符(请参阅此处)。
推荐阅读
- reactjs - 注销并使用另一个帐户登录时更改导航栏上的数据
- javascript - 没有参数的Javascript函数调用
- php - php从数据库表中查找和替换文本中的单词
- sql - Combining three select statements to provide single output
- javascript - How to force div to not go out from another
- laravel - Codedeploy 设置
- unreal-engine4 - 虚幻引擎 4:在打包的游戏中使用 AssetRegistry 加载/装载文件和加载资产的 PAK 文件的正确方法是什么?
- node.js - nodemailer 无法读取 req.body
- html - PayloadTooLargeError:尝试 POST 到 SQL 时请求实体太大
- android - hostpython2 构建错误(对于使用 Kivy 的 Android)