我尝试使用必需的文件验证程序实现IP地址验证,但它似乎无法显示错误“无法识别的转义序列”
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="txtadapterid" ErrorMessage="Please Enter a Valid IP Address"
Font-Size="Small"
ValidationExpression="^(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d)$"></asp:RegularExpressionValidator>
,代码文件方法是
private void checkRejex(string strFindin)
{
Regex myRegex = new Regex("^(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d)$");
if (myRegex.IsMatch(strFindin))
{
lblmsg.Text = "Valid Input";
lblmsg.ForeColor = Color.Green;
}
else
{
lblmsg.Text = "Please enter a valid IP Address";
lblmsg.ForeColor = Color.Red;
}
}
答案 0 :(得分:1)
在C#字符串中,反斜杠字符(\
)具有特殊含义:它是一个转义字符。你需要使用双反斜杠来消除特殊含义:
"^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|25[0-5]|2[0-4]\\d)$"
或者使用一个逐字字符串文字,前缀为@,其中反斜杠没有特殊含义:
@"^(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d)$"
在逐字字符串中,只需要对双引号("
)进行转义(再次使用一对""
),因为它们用于分隔字符串。
答案 1 :(得分:1)
而不是带有反斜杠的普通字符串,如下所示:
new Regex("^(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d)$")
你需要使用一个前缀为@
的Verbatim字符串,如下所示:
new Regex(@"^(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d)$")
@
可以防止反斜杠被解释为字符串的一部分,而是使它们按照您的意图传递给正则表达式。
有关详细信息,请参阅文档中的String literals。