将字符串与正则表达式c#匹配
本文关键字:匹配 正则表达式 字符串 | 更新日期: 2023-09-27 18:25:25
程序会得到一个字符串,表示电子表格中单元格的名称。该电子表格可以包含一个名称以字母a-zA-Z_开头的单元格,必须是这种情况,否则任何内容都无效。在第一个字母或下划线之后,可以有字母、数字或下划线的任意组合。例如:
______35we3I
是有效名称
123dfdf
不是有效名称。
如果这些字符串存在,我想抛出一个异常。我是正则表达式的新手,但这就是我想到的,它不能像我希望的那样工作。
@"[a-zA-Z_][a-zA-Z_|'d]*"
当在Regex.IsMatch
函数中传递第二个示例时,由于表达式的后半部分有效,因此返回true。有没有办法总是从字符串的开头开始?
我应该说,我尝试使用{^}来满足上述条件,但当胡萝卜在那里时,它什么都不接受。
您需要使用开始和结束锚点,并且不需要将|
放入字符类中。char类内的|
将与文字|
符号相匹配。
@"^[a-zA-Z_][a-zA-Z_'d]*$"
代码:
String s = "123dfdf";
if (!Regex.IsMatch(s, @"^[a-zA-Z_][a-zA-Z_'d]*$")) {
Console.WriteLine("Error! Wrong format.");
}
else {
Console.WriteLine("Correct format.");
}
IDEONE
为了测试正则表达式,这里有一个非常好的网站
对于您的正则表达式,您希望在正则表达式中添加一个数字验证器:
@"^[0-9a-zA-Z_][a-zA-Z_'d]*"
这样,您的两个字符串就被验证了。
@"^[a-zA-Z_][a-zA-Z_'d]*"
这样,只验证了以非数字开头的字符串。