2015-04-01 69 views
1

这是previous thread的延续,因为没有任何答案产生预期结果。我正在使用正则表达式匹配日期,以获得超级奇怪的行为。我想匹配的日期如下:匹配方括号的正则表达式是什么? (Part II)

[month-day] 

如:

"[01-23]" // January 23rd is a valid date 
"[02-31]" // February 31st is an invalid date 
"[02-16]" // valid 
"[ 6-03]" // invalid format 

这里是我的正则表达式:

regex = /\[^[0-1][1-9]\-[0-3][0-9]\]/ 

我试图把两个单\人和双人\盈括号,但似乎没有工作匹配这些日期。有任何想法吗?

谢谢!

+1

你有什么期望了''^做? – jwodder 2015-04-01 12:54:01

+0

要匹配表达式 – 2015-04-01 12:54:55

+0

中的第一个括号它不会这样做。在这种情况下,它将被视为文字插页。我认为你实际上的意思是这个/^\ [[0-1] [1-9] \ - [0-3] [0-9] \]/ – rhuffstedtler 2015-04-01 12:55:49

回答

4

与您的正则表达式的问题是在最初的方括号之后放置起始行锚点^。这不可能发生,所以你的正则表达式不会匹配任何东西。

移动锚点到你的表达式的开头来解决这个问题:

regex = /^\[[0-1][1-9]\-[0-3][0-9]\]/ 
2

把“行首”字^第一:

regex = /^\[[0-1][1-9]-[0-3][0-9]\]/ 

而且你也不需要在这种情况下逃避中间减去-

1

您将锚^放在错误的地方。它必须在最前面或者它永远不会匹配。此外,你的正则表达式甚至不工作,你希望它的工作方式:

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

+0

大声笑我没有完成它的其余部分! – 2015-04-01 12:56:57

+1

啊好的。祝你好运,除非你也想得到帮助 – m0meni 2015-04-01 12:57:52