c# - 使用正则表达式匹配字符串 c#

标签 c# regex

程序被赋予一个字符串,作为电子表格中单元格的名称。此电子表格可以包含一个名称以字母 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.");
}

IDEONE

关于c# - 使用正则表达式匹配字符串 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26181676/

相关文章:

c# - T4 模板仅在我将它们设置为 "Debug"时运行

c# - 如何在 C# 中访问 header 模板

c# - 如何检查 Json 是否匹配特定的 C# 类型?

python - 使用 re.match 匹配字符串不起作用

Python 对替换文本中的十六进制转义的支持

谷歌表格中的正则表达式正向后视

c# - 如何阻止变量重置

c# - 为什么邮件主题在 MailGun 的 HTTP 帖子中重复?

regex - nginx重写: the symbol for ANY UTF8 character

php - 使用正则表达式分隔本地、youtube 或 vimeo 视频