问题描述
在Cloudformation模板中遇到了一个问题,他想要为电子邮件参数指定一个正则表达式。他尝试了/[^\s@]+@[^\s@]+\.[^\s@]+/
,但不起作用。他想知道Cloudformation模板中电子邮件的正则表达式是什么。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
在AWS CloudFormation模板中,使用JSON语法来指定对象和数据,因此在正则表达式中的反斜杠字符前需要添加一个额外的反斜杠,否则JSON会将其解释为转义字符。
例如,如果你在正则表达式中包含\d
来匹配一个数字字符,你需要在JSON模板中将其写为\\d
。
同样的规则也适用于\s
表达式。使用\\s
即可。
你可以在AWS CloudFormation文档中找到更多关于正则表达式的信息:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-regexes.html
方案2
请注意以下操作注意版本差异及修改前做好备份。
根据回答2,你可以在YAML格式中使用以下方式来定义AllowedPattern:
Parameters:
MyEmail:
Description: Email for notifications
Type: String
AllowedPattern: '[^@]+@[^@]+\.[^@]+'
请注意,如果你的值包含特殊字符(如:
、{
、}
、[
、]
、,
、&
、*
、#
、?
、|
、-
、<
、>
、=
、!
、%
、@
),请使用引号括起来。
你可以在以下链接中找到更多关于YAML语法的信息:https://stackoverflow.com/questions/19109912/do-i-need-quotes-for-strings-in-yaml
正文完