从数据库表中检索时的正则表达式问题

时间:2015-05-11 08:29:55

标签: c# regex

我们在nvarchar列的数据库表中有正则表达式值@"^[a-zA-Z0-9_]*$。当我们从数据库表中检索表达式时,我们使用特殊字符@"^[a-zA-Z0-9_]*$"

获取表达式值

不评估此值。我如何确保

  • 正则表达式是有效表达式

  • 如何从数据库表中获取表达式值时删除特殊字符。

这是代码:

public static bool IsMatch(string target, string pattern, RegexOptions options) {
    if (String.IsNullOrEmpty(target)) {
        throw new ArgumentNullException("target");
    } if (String.IsNullOrEmpty(pattern)) {
        throw new ArgumentNullException("pattern");
    }
    return Regex.IsMatch(target, pattern, options);
}

1 个答案:

答案 0 :(得分:1)

要检查正则表达式是否是有效的正则表达式,请使用ArgumentException

try
{
    var rxnew = new Regex(@"[z-a]");
}
catch (ArgumentException ae)
{
    MessageBox.Show(ae.Message);
    // Shows "parsing "[z-a]" - [x-y] range in reverse order."
}

您可以通过运行此S& R:

来取消"符号
var str = "@\\\"^[a-zA-Z0-9_]$"; // Input: @\"^[a-zA-Z0-9_]$
var fixed_str = Regex.Replace(str, "(?<!\\\\)\\\\\"","\""); // Output: @"^[a-zA-Z0-9_]$