场合
我正在尝试以该格式构建一个字符串2010/2011
,基本上是一年。
我做了什么
我有表达式^((?=.{4,4}$)[0-9]+$)
,它接受4个数字
我可以将其更改为^((?=.{8,8}$)[0-9]+$)
,它将接受8个数字。但是,我仍然没有解决在两年之间获得/
的问题。
我尝试^((?=.{4,4}$)[0-9]+$).
我希望能够输入2010z(四个数字加上任何数字)但是它仍然会抛出错误。
所以我的问题,我能否明确说出像{4 digits}{ONLY /}{4 digits
这样的表达方式。如果是这样,我如何合并^((?=.{4,4}$)[0-9]+$)
并且只允许' /'它们之间。
答案 0 :(得分:1)
如果我正确地读到这个,你会想要这样的东西:
^(\d{4})\?(\d{4})?$
含义4位数后跟可选的斜杠4位数。
答案 1 :(得分:1)
这是一个采用任何分隔符或没有分隔符的单词,并确保每年有四个数字或不存在匹配。
所以2010-2017
和2010/2017
或2010 2017
或20102017
一样有效,但201092017
无效。
^\d{4}[^\d]?\d{4}$
如果您需要捕获各个年份,请使用( )
制作群组,以便现在的模式如下所示
^(\d{4})[^\d]?(\d{4})$
并在myMatch.Groups[1].Value
和myMatch.Groups[2].Value
处提取。
2010/2017
上的结果与这些Groups[X]
Match #0
[0]: 2010/2017
["1"] → [1]: 2010
["2"] → [2]: 2017
答案 2 :(得分:0)
你的正则表达式:(?=.{4,4}$)
实际上意味着:
所以无论如何,它都不会匹配像2010/2011
这样的字符串。
尝试“更自然”的正则表达式:
^(\d{4})\/(\d{4})$
这意味着:
我使用捕获组,因为我认为你可能对两者感兴趣 数字(斜杠之前和之后),因此更容易阅读它们 来自捕获小组。