Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式的计算结果不符合预期_C#_Regex_C# 4.0 - Fatal编程技术网

C# 正则表达式的计算结果不符合预期

C# 正则表达式的计算结果不符合预期,c#,regex,c#-4.0,C#,Regex,C# 4.0,我正在尝试评估下面的代码,但它没有返回预期的结果。 使用字符串“CityName!!!”进行测试将返回true而不是false。我的表达式应该只允许以字母开头的任意长度的字母和空格字符串 protected bool isValidCityName(string cityName) { Regex cityMatch = new Regex(@"^[a-zA-Z][a-zA-Z\s]+"); return cityMatch.IsMatch(cityNa

我正在尝试评估下面的代码,但它没有返回预期的结果。 使用字符串“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);
如果您需要应用程序支持其他语言/地区(如魁北克),请使用:


尝试在末尾添加一个
$

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

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


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

非常有效。我知道大多数角色,但以前从未担心过主播。请不要在问题标题中包含有关语言的信息,除非没有它就没有意义。标签就是为了这个目的。
Regex cityMatch = new Regex(@"^[a-zA-Z][a-zA-Z\s]+$");