比较C#中的字符串和静态正则表达式?

时间:2011-06-10 07:17:29

标签: c# regex string

我想知道,对于那些真正不熟悉正则表达式的人来说,找到如何将字符串与指定字符串的正则表达式格式匹配有什么简单方法吗?

例如,这个字符串是从另一个函数生成的:

3A5AE0F4-EB22-434E-80C2-273E315CD1B0

我不知道这个字符串的正确正则表达是什么。

假设我有一个函数将此字符串作为参数

        public static bool isValidRegex(string inputString)
        {
            Regex myRegex = ????

            if inputstring matches myRegex then
            return true;

            else 
            return false;


        }

正则表达式将使此函数返回true是什么意思?

注意:由于我不熟悉C#,所提供的代码可能根本不正确,我知道。

4 个答案:

答案 0 :(得分:9)

在这种情况下,看起来这是一个Guid - 如果你使用的是.NET 4,最简单的方法可能是使用Guid.TryParse ......但如果你需要使用正则表达式,它会可能是:

^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$

换句话说,字符串的开头,8个十六进制数字,短划线,4个十六进制数字,短划线,4个十六进制数字,短划线,4个十六进制数字,短划线,12个十六进制数字,字符串结尾。请注意,我假设任何字母字符都是大写而不是低位。

这可能值得创建一次,并可能编译它,所以你最终得到:

private static readonly Regex GuidPattern = new Regex
    ("^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$",
      RegexOptions.Compiled);

public static bool IsValidRegex(string inputString)
{
    return GuidPattern.IsMatch(inputString);
}

答案 1 :(得分:1)

如果格式是8个字母 - 4 - 4 - 4 - 12

然后是

[0-9A-Z] {8} - [0-9A-Z] {4} - [0-9A-Z] {4} - [0-9A-Z] {4} - [O-图9A-Z] {12}

答案 2 :(得分:0)

类似的东西:

^[0-9A-Z]{8}-[0-9A-Z]{4}[0-9A-Z]{4}[0-9A-Z]{4}[0-9A-Z]{12}$

在花括号之间你有元素的数量,在[]之间你有所有可能的数字都是字母。

答案 3 :(得分:0)

正则表达式是一种将精确值与模式匹配的方法。但是你需要知道你会接受什么样的模式。在示例中,您引用了什么提供了可接受的匹配?

“3A5AE0F4-EB22-434E-80C2-273E315CD1B0”是确切的值

如果有人传入“3A5AE0F4-EB22-434E-80C2-273E315CD1B1”,你会感到高兴吗 或“xxxxxxxx-EB22-434E-80C2-273E315CD1B0”

或“xxx”

或3.14257

所以这是第一件事,这取决于你的要求,你还没有说清楚。

然后

 string sPattern = "^[a-zA-Z0-9]+$";
 bool match = Regex.IsMatch(yourstring, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
如果您的字符串仅包含字母数字字符

将返回true