Exchange 中令人困惑的正则表达式问题

Exchange 中令人困惑的正则表达式问题

Exchange 2010 中有一个传输规则,它本身行为不正常,如果我尝试修复它,就会受到 EMC 的斥责。

该规则的目的是阻止任何来自地址末尾带有“us”的域名的电子邮件,除非该域名以合法的美国州缩写结尾,例如 NY.US 或 CA.US

如上所述,模式匹配如下:

.*@.*.us$(任何以“.us”结尾的电子邮件)

除了

.*@.*.az.us$(州缩写)

. (句点)元字符似乎是这里的罪魁祸首,但如果我尝试用反斜杠将其转义,如下所示:

.*@.*\.us$(任何以“.us”结尾的电子邮件)

除了

.*@.*\.az.us$(州缩写)

EMC 抱怨“您输入的正则表达式包含以下错误。您对反斜杠字符的使用存在问题。在正则表达式中,反斜杠字符用于文本模式匹配...反斜杠字符也可以用作转义字符...”

这正是我想做的。

知道如何修复此问题吗?

答案1

嗯,你用反斜杠错了。我不确定你为什么要转义其中一个句号,但这不是正确的语法,这就是为什么 EMC 会告诉你反斜杠字符的使用存在问题

反斜杠用作特殊字符前的转义字符。特殊字符是模式字符串中使用的字符:

反斜杠 ( \ )

管道 ( | )

星号 ( * )

左括号 ( ( )

右括号 ( ) )

插入符号 ( ^ )

美元符号($)

例如,如果要匹配包含 (525) 的字符串,则可以输入 (525)。

换句话说,您不能使用反斜杠来“转义”句号。

相关内容