C# 正则表达式,如何检查正则表达式组是否仅包含数字

标签 c# .net regex

我在 C# 中制作了以下正则表达式模式:

Regex pattern = new Regex(@"(?<prefix>retour-)?(?<trackingNumber>\s*[0-9]+\s*)(?<postfix>-([0]|[1-9]{1,2}))?");
(?<prefix>retour-)?(?<trackingNumber>\s*[0-9]+\s*)(?<postfix>-([0]|[1-9]{1,2}))?
  • 这就是我想要的:三组。
    • prefix 组是 "retour-",如果出现,则位于开头。
    • trackingNumber 组是强制性的,并且只能包含数字。
    • postfix 组是 "-" 后仅跟数字,这不是强制性的。
  • 我希望 trackingNumber 组仅在包含数字时才能成功。 postfix 也是如此。在类似的问题中,问题是通过使用正则表达式 anchor (^, $) 解决的,但在我的例子中,我无法使用它们,因为 trackingNumber 组从中间开始。

For example:

  • "1234ABC3456" 不应成功
  • "retour-123456-12B" 也不应该成功

问题在于,即使对于不只包含数字的系列,正则表达式 (?<trackingNumber>\s*[0-9]+\s*) 也会返回成功。

最佳答案

这种模式对我有用:

^(?<prefix>retour-)?\s*(?<trackingNumber>\d+)\s*(?<postfix>-(\d+))?$
<表类=“s-表”> <标题> 输入 结果 <正文> 1234ABC3456 没有匹配 retour-123456-12B 没有匹配 retour-123456-123 前缀:"retour-",跟踪编号:"123456",postFix:"-123" 543210-999 trackingNumber:"543210",postFix:"-999" 987654 跟踪编号:"987654"

https://regex101.com/r/Fo1pvU/1

关于C# 正则表达式,如何检查正则表达式组是否仅包含数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73440787/

相关文章:

.net - 如何将 XML 从 SQL Server 2005 流式传输到 HTTP 响应流以供下载

regex - 匹配精确后缀的正则表达式

c# - 为什么最低地址空间(尽管非空)中的内存访问被 .NET 报告为 NullReferenceException?

.net - asp.net中的实例失败

c# - 如何使用 C# 在 MongoDB 中的嵌套子数组文档中查找元素

c# - SignalR : Where to store them? 中的 session 数据

php - 这个正则表达式匹配什么?来自 mediawiki 源代码的 php 正则表达式

ruby-on-rails - Ruby Rubocop - 更喜欢使用 MatchData

c# - 如何使用C#在WinRT上使用Google Analytics API

c# - VS.NET 'current breakpoint will not be hit' 警告的原因?