繁体   English   中英

正则表达式未按预期进行评估

[英]Regular Expression not evaluating as expected

我试图评估下面的代码,但它没有返回预期的内容。 使用字符串“CityName !!!”进行测试 返回true而不是false。 我的表达式应该只允许一个字母和空格的字符串,任何长度,以字母开头。

protected bool isValidCityName(string cityName)
    {
        Regex cityMatch = new Regex(@"^[a-zA-Z][a-zA-Z\s]+");

        return cityMatch.IsMatch(cityName);
    }

谢谢

您的模式只检查字符串是否以该模式开头 您需要包含一个结束锚( $ )以确保匹配后没有尾随字符:

Regex cityMatch = new Regex(@"^[a-zA-Z][a-zA-Z\s]+$");

此外,您可能需要考虑使用IgnoreCase选项:

Regex cityMatch = new Regex(@"^[a-z][a-z\s]+$", RegexOptions.IgnoreCase);

如果您需要应用程序支持其他语言/区域设置(例如魁北克),请使用Unicode类别

Regex cityMatch = new Regex(@"^\p{L}[\p{L}\s]+$");

尝试在结尾添加$

Regex cityMatch = new Regex(@"^[a-zA-Z][a-zA-Z\s]+$");

现在,您的表达式只需要字符串以这些字符开头 ^表示字符串的开头, +表示一个或多个 $表示字符串的结尾

几乎所有正则表达式解析器都是一样的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM