日期、破折号等的JavaScript正则表达式

日期、破折号等的JavaScript正则表达式,javascript,regex,Javascript,Regex,我有以下可能的字符串: 01/01/2013 < 01/01/2013 > 01/01/2013 < 01/01/2013 - 01/01/2013 > 01/01/2013 - 01/01/2013 > 01/01/2013 - < 01/01/2013 > 01/01/2013 - > 01/01/2013 < 01/01/2013 - < 01/01/2013 < 01/01/2013 - > 01/0

我有以下可能的字符串:

01/01/2013

< 01/01/2013

> 01/01/2013

< 01/01/2013 - 01/01/2013

> 01/01/2013 - 01/01/2013

> 01/01/2013 - < 01/01/2013

> 01/01/2013 - > 01/01/2013

< 01/01/2013 - < 01/01/2013

< 01/01/2013 - > 01/01/2013

01/01/2013 - 01/01/2013
01/01/2013
< 01/01/2013
> 01/01/2013
< 01/01/2013 - 01/01/2013
> 01/01/2013 - 01/01/2013
> 01/01/2013 - < 01/01/2013
> 01/01/2013 - > 01/01/2013
< 01/01/2013 - < 01/01/2013
< 01/01/2013 - > 01/01/2013
01/01/2013 - 01/01/2013
这些都是可以应用于搜索特定日期的过滤器。我想做的是将字符串分割成可以由代码管理的块

例如:

var过滤器='>01/01/2013-<01/01/2013'

var string1 = '>';
var string2 = '01/01/2013';
var string3 = '<';
var string4 = '01/01/2013';
var string1='>';
变量string2='01/01/2013';

var string3='为什么不删除所有的破折号,然后在空格处拆分

filter = filter.replace("- ", "");
strings = filter.split(" ");

您可以使用

var strings = filter.match(/^\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})\s*\-?\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})?\s*$/).slice(1);
var strings=filter.match(/^\s*()?\s*(\d\d\/\d\d\/\d{4})\s*-?\s*(\d\d\/\d\/\d{4})?\s*$/).slice(1);
此正则表达式确保顺序(如果缺少
,则数组中存在
未定义的

例如:

'>01/01/2013-<01/01/2013'
给出了
[“>”,“01/01/2013”,“01/01/2013”,未定义,未定义]


'01/01/2013-01/01/2013'
给出了
[undefined,“01/01/2013”,undefined,“01/01/2013”]

不确定,但
\s
似乎更好,因为这里似乎有字符串输入。@U Green先生,是的。这取决于目标是否也是验证。@格林先生,事实上,您的正则表达式有一个问题:如果缺少<和>,它无法确保字符串在数组中的位置。
var strings = filter.match(/^\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})\s*\-?\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})?\s*$/).slice(1);