正则表达式模式 C#

本文关键字:模式 正则表达式 | 更新日期: 2023-09-27 18:32:07

我想以这样的方式验证一个字符串,即在该字符串中,如果存在"-",则它应该在其前后都有一个字母表。但我无法形成正则表达式模式。

任何人都可以帮我做同样的事情。

正则表达式模式 C#

与其使用正则表达式来检查这一点,我想我会使用 Char.IsLetter() 编写一个扩展方法。然后,您可以处理多个破折号,并使用英语以外的语言。

public static bool IsValidDashedString(this String text)
{
    bool temp = true;
    //retrieve the location of all the dashes
    var indexes =  Enumerable.Range(0, text.Length)
            .Where(i => text[i] == '-')
            .ToList();
    //check if any dashes occur, if they are the 1st character or the last character
    if (indexes.Count() == 0 ||
        indexes.Any(i => i == 0) ||
        indexes.Any(i => i == text.Length-1))
    {
        temp = false;
    }
    else //check if each dash is preceeded and followed by a letter
    {
        foreach (int i in indexes)
        {
            if (!Char.IsLetter(text[i - 1]) || !Char.IsLetter(text[i + 1]))
            {
                temp = false;
                break;
            }
        }
    }
    return temp;
}

以下内容将匹配一个字符串,在"-"之前和一个字母字符之后:

[A-z]-

[A-z]

如果情况并非总是如此,您可能需要首先测试是否存在"-"。 可以提供有关可能的字符串内容以及需要执行测试的确切原因的更多信息

(^.+)('D+)(-)('D+)(.+)

我已经在这里测试了一些例子 http://regexr.com/39vfq