【问题标题】:Regex for a repeating pattern in C#C# 中重复模式的正则表达式
【发布时间】:2014-07-11 13:32:28
【问题描述】:

我正在尝试创建一个正则表达式来验证一个字符串。该字符串可以是以下格式(以便了解我在这里尝试做什么):

145/1/3 或

748/57676/6765/454/345 或

45/234 45/235 45/236

所以基本上字符串可以包含数字、空格和正斜杠,并且字符串只能以数字结尾。我是 regex 的新手,并且已经解决了网站上的许多问题。但请你不得不承认,这确实令人困惑且难以掌握。如果有人可以推荐一位作者或任何可以教授正则表达式的网络链接,那将非常有帮助。在此先感谢队友!

【问题讨论】:

    标签: c# regex validation


    【解决方案1】:

    我想出了这个

    ^[0-9]( |[0-9]|\/)*[0-9]$
    

    并使用this进行测试。

    您可以看到它匹配任何以 (^) 开头的数字、零个或多个 (*) 的空格、数字或 (|) 正斜杠 (/) 以及以 a 结尾的 ($)号码。

    现在我知道空格和/ 不能一起使用,并且也不允许使用多个空格和/或斜杠,这个正则表达式更适合你。

    ^[0-9]+([ \/][0-9]+)*$
    

    【讨论】:

    • @KonradKokosa 为什么不匹配?
    • 这对我来说很有效 - 除非 OP 不希望斜线后面有空格
    • 他没有说他没有,所以也许他应该澄清一下。
    • 大家好,对不起,我忘记了那部分。是的,斜线和空格不应该在一起。这个工作非常完美。非常感谢马特!我非常想学习正则表达式。你能推荐一些文章或视频或任何东西吗?
    • @PrashantTiwari 我从this 网站学到了很多正则表达式知识。我同意你的观点,RegEx 可能是一个挑战。祝你好运!
    【解决方案2】:

    这应该可以工作:^[/\d\s]*\d$

    它正在寻找字符串 ^ 的开头,然后是 0 个或多个数字,空格 [/\d\s]* 后跟一个数字 \d,然后是字符串的结尾 $

    【讨论】:

    • @Konrad 所以只是为了确保我理解:每个空格分隔的数字组和 /s 必须以数字结尾,而不仅仅是整个字符串必须以数字结尾?
    • 所以我理解这个问题,但我相信这是 OP 的问题。
    • 就我而言,这符合提问者的要求。
    【解决方案3】:

    您应该使用以下正则表达式:

    (\d+(/\d+)*\s*)+
    

    这意味着:一些数字 (\d+) 后跟一些数字的可选重复模式,\ ((/\d+)*) 后跟可选数量的空格 (\s*),它们都至少重复一次。

    【讨论】:

    • 他说需要以数字结尾。
    • @MattCremeens,问他,而不是我......然后我们现在知道谁是对的。
    • 我不需要问他。这已经在他的问题中了:...and the string can end with a number only.
    • @MattCremeens,他提供的例子暗示了别的东西。所以不要那么肯定。
    【解决方案4】:

    试试这个:

    ^\d(\d|\s|\/)*\d$
    

    \d = 数字字符(您也可以使用[0-9])。 \s = 空格字符 括号后跟一个星号表示无限次重复\d\s/。 最后的\d$ 表示结尾必须匹配一个数字。

    【讨论】:

    • 这不适用于748/57676/ 6765/454/345 - 不确定它是否足以满足 OP。
    • 我认为你需要转义/,他说它需要以数字结尾,所以附加一个$
    猜你喜欢
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2016-01-11
    相关资源
    最近更新 更多