C#:判断字符串是否是这种模式;可能的正则表达式

标签 c# regex

考虑一个如下所示的字符串:

RR1 S5 C92

这是用于外地邮件投递的乡村路线地址:Rural Route, Site, Compartment。每个字母后跟一个数字和一个空格。通常长一到三位数字,但您永远不知道它可能是多少位数字!如果用户懒惰,他们可能输入了零个、一个或多个空格。

问题: 您将使用什么正则表达式来确定给定字符串是否与此模式匹配?

它的用法是这样的:

string ruralPattern; //a regex pattern here
bool isRural = Regex.Match(someString, ruralPattern);

更新:感谢您的建议!性能和使用将在从 Web 服务调用的程序集中的静态方法中进行。根据此模式检查的字符串最多为 50 个字符。该方法将大约每 5 秒调用一次。关于保持静态的任何建议?非常感谢!

最佳答案

这应该有效:

^[Rr][Rr]\d+ *[Ss]\d+ *[Cc]\d+$

或根据其他评论

^[Rr][Rr][0-9]+ *[Ss][0-9]+ *[Cc][0-9]+$

这一切意味着什么:

  • ^ - 字符串的开始
  • [Rr] - 下一个字符必须是 R 或 r
  • [Rr] - 下一个字符必须是 R 或 r
  • \d+ 或 [0-9]+ - 下一部分必须是一位或多位数字
  • (空格)* - 允许 0 个或更多空格
  • [Ss] - 下一个字符必须是 S 或 s
  • \d+ 或 [0-9]+ - 下一部分必须是一位或多位数字
  • (空格)* - 允许 0 个或更多空格
  • [Cc] - 下一个字符必须是 C 或 c
  • \d+ 或 [0-9]+ - 下一部分必须是一位或多位数字
  • $ - 字符串结尾

可能有更优雅的解决方案,但这很容易阅读。

编辑:已更新以包含一些评论的输入

关于C#:判断字符串是否是这种模式;可能的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337820/

相关文章:

c# - 如何使用 acrofields 创建模板 PDF 文件?

c# - Linq 到对象 : Distinct + Concatenation

c# - 垂直对齐asp面板

c# - 电子邮件 #2 的正则表达式

regex - 在同一位置查找和替换匹配的字母

regex - 在 Lua 中使用正则表达式查找前导星号

javascript - 匹配最后一个冒号之后的字符串

java - 用于提取键值对的正则表达式

c# - 为什么将 null 转换为类型以进行方法选择?

c# - "proxy properties"是好样式吗?