次のコードがあります。
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
''
または'-'
ダッシュが 2 つの日付の間に存在する場合
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"]
したがって、最後の 3 番目のキーは、正規表現によって実際に取得されるわけではありません。そして、代わりに4番目を取得します。