程序被赋予一个字符串,作为电子表格中单元格的名称。此电子表格可以包含一个名称以字母 a-zA-Z_ 开头的单元格,必须如此,其他任何内容均无效。在第一个字母或下划线之后可以是字母数字或下划线的任意组合。例如:
______35we3I
是一个有效的名字
123dfdf
不是有效名称。
如果这些字符串存在,我想抛出一个异常。我是正则表达式的新手,但这是我想出的,但它并不像我想要的那样工作。
@"[a-zA-Z_][a-zA-Z_|\d]*"
当在 Regex.IsMatch
函数中传递第二个示例时返回 true,因为表达式的后半部分有效。有没有办法总是从字符串的开头开始?
我应该说我尝试使用 {^} 来完成上述条件,但是当胡萝卜在那里时它不接受任何东西。
最佳答案
您需要使用开始和结束 anchor ,并且不需要将 |
放在字符类中。 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.");
}
关于c# - 使用正则表达式匹配字符串 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26181676/