C# 正则表达式的计算结果不符合预期
我正在尝试评估下面的代码,但它没有返回预期的结果。 使用字符串“CityName!!!”进行测试将返回true而不是false。我的表达式应该只允许以字母开头的任意长度的字母和空格字符串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
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]+$");