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

这些都是可用于搜索特定日期的过滤器。我想要做的是将字符串拆分成可以由我的代码管理的块。

例如:

var filter = '> 01/01/2013 - < 01/01/2013'

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

所以 string1 将是它可以找到的第一个尖括号。String2 总是它可以找到的第二个日期。和 string3 下一个尖括号。最后是 string4 它可以找到的下一个日期。

我已经查看了各种示例,到目前为止有以下内容:

var string1 = filter.split([\<>]);
var string2 = filter.split(^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$.);
var string3 = filter.split([\<>]);
var string4 = filter.split(^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$.);

但我不确定这是实现我想要的最佳方式。有没有人有任何处理这个的例子或建议?

4

2 回答 2

1

你可以把你所有的字符串放在一个数组中

var strings = filter.match(/^\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})\s*\-?\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})?\s*$/).slice(1);

此正则表达式可确保顺序(如果缺少a<或,则数组中有 a )。>undefined

例如 :

'> 01/01/2013 - < 01/01/2013'[">", "01/01/2013", "<", "01/01/2013"]

'> 01/01/2013'[">", "01/01/2013", undefined, undefined]

'01/01/2013 - 01/01/2013'[undefined, "01/01/2013", undefined, "01/01/2013"]

于 2013-11-05T11:16:42.777 回答
0

为什么不直接删除所有破折号,然后在空格字符处拆分?

filter = filter.replace("- ", "");
strings = filter.split(" ");
于 2013-11-05T11:15:08.297 回答