我正在使用 Bicep,但我了解旧的 ARM JSON 语法,足以在有人知道一个但不知道另一个的情况下适应解决方案。不管怎样,我可以通过在我的一个policyRule对象中执行此操作来轻松判断参数值是否为空字符串:
policyRule: {
if: {
{
field: '[concat(\'tags[\', parameters(\'tagName\'), \']\')]'
equals: ''
}
}
...rest of rule and then statement
}
或使用 exists: false
测试存在性
但是我如何检查该值是否只是一堆空格,例如 ""
?我尝试将 field: value 修改为:
[trim(concat(\'tags[\', parameters(\'tagName\'), \']\'))]
但它似乎不起作用。我仍然可以输入一堆空格并使其通过验证。
最佳答案
Trim
仅删除前导和尾随空白,我也给出了与您使用的相同的空白。
这将从参数值中删除任何前导或尾随空格,然后再检查参数值是否为空。如果参数值仅包含空格字符,trim 函数会将其转换为空字符串,从而触发 equals: "
条件并使策略检查失败。
policyRule: {
if: {
{
field: '[trim(concat(\'tags[\', parameters(\'tagName\'), \']\'))]'
equals: ''
}
}
}
但是,您需要将 replace
函数与正则表达式结合使用,以删除参数值中的所有空白字符。
您可以修改策略规则,如下所示:
policyRule: {
if: {
{
field: '[replace(concat(\'tags[\', parameters(\'tagName\'), \']\'), \'\\s\', \'\')]'
equals: ''
}
}
}
关于azure - 在 Bicep 或 ARM 中,如何检测策略规则部分中仅为空格的参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75744720/