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 は常に、2 番目に検出された日付になります。そして 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);

この正規表現により、順序が保証されます (<または>が欠落している場合はundefined、配列に a があります)。

例えば ​​:

'> 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 に答える