我有以下代码:
var splitter = (filterValue.length > 0 ? filterValue.match(/^\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})\s*\-?\s*(\d\d\/\d\d\/\d{4})?\s*$/).slice(1) : '');
filterValue
可能在哪里:
01/01/2013
> 01/01/2013
< 01/01/2013
01/01/2013 - 01/01/2013
然后我把它们分成几块,比如:
var string1 = (splitter.length > 0 ? splitter[0] : '');
var string2 = (splitter.length >= 2 ? splitter[1] : '');
var string3 = (splitter.length >= 3 ? splitter[2] : '');
var string4 = (splitter.length < 4 ? splitter[3] : '');
string1
将是'', '>', '<', ''
上述示例。
string2
永远是第一次约会
string3
将是''
或者'-'
如果破折号出现在两个日期之间
string4
将是最后一天。
但是我无法让最后一个场景起作用。所以假设我的正则表达式有问题来处理这个问题。任何人都可以看到问题吗?
小提琴:http: //jsfiddle.net/7LR49/1/
我越来越:
undefined
01/01/2013
01/01/2013
undefined
当我应该得到:
undefined
01/01/2013
-
01/01/2013
并在分离器上做一个控制台显示:
[undefined, "01/01/2013", "01/01/2013"]
所以最后的第三个键实际上并没有被正则表达式拾取。取而代之的是第四名。