我正在动态验证正则表达式来自数据库
的正则表达式好的,所以\
取代\\
which is not validating the email
我有Regex RegExp = new Regex("@" + IsMandatoryTextTextAreaFiles.vcr_RegularExpression, RegexOptions.Compiled);
其中IsMandatoryTextTextAreaFiles.vcr_RegularExpression=\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
。
那现在该怎么办?
答案 0 :(得分:1)
不,\
不会被\\
取代,我的猜测是你正在查看调试器中的值,其中显示字符串,因为它将被写为字符串文字代码。
连接字符串"@"
和其他字符串并不会使它成为文字字符串,即"@" + "asdf"
与@"asdf"
不同,它只是"@asdf"
。这意味着@
成为模式的一部分。只需按原样使用字符串:
Regex RegExp = new Regex(IsMandatoryTextTextAreaFiles.vcr_RegularExpression, RegexOptions.Compiled);
请注意,正则表达式仅验证字符串包含有效的电子邮件,而不是仅是有效的电子邮件。例如,字符串"Here: asdf@asdf.com dear sir"
将通过测试。
您可以使用^
和$
在正则表达式中指定字符串的开头和结尾:
^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$