2012-03-16 21 views
6

次の(またはそれに類似した)文字列 "08-27-2015 07:25:00 AM"を分割しようとしています。 は現在、私はこの問題は00AM一部である両方を含む文字列の数字と文字を分割する

["02", "27", "2012", "03", "25", "00AM"] 

になり

var parts = date.split(/[^0-9a-zA-Z]+/g); 

を使用しています。私はそれも分離されたい。だから、完璧な結果は次のようになります。

["02", "27", "2012", "03", "25", "00", "AM"] 
+1

入力の形式は、一貫してその形式の日付ですか? – gahooa

+0

分割や文字列の実際の部分に興味がありますか? –

+0

私はそれを実際にそのように日付を解析するために使用しています。セルジオ、あなたが何を意味するかわからない。私は正しい部品を手に入れたいと思うし、文字列を分割することでそれを試みます。 –

答えて

20

あなたは配列の両方混在文字や数字のシーケンスを探しているが、いない場合は、あなたがこれを行うことができます...

"08-27-2015 07:25:00AM".match(/[a-zA-Z]+|[0-9]+/g) 

|のいずれかの側にある...

["08", "27", "2015", "07", "25", "00", "AM"] 

その結果、我々は、一の以上の文字とoの配列の配列を持っていますne以上の数字。だから、それは手紙に出くわすとき、手紙が非手紙に達するまですべての連続した手紙を集め、その手紙にすべての連続した数字を集めるなどします。

他の文字は単に一致しないので、結果の一部にはなりません。

+1

それはちょうど完璧です、それは '02June2015'を分割します。ありがとう! –

1
var date = "08-27-2015 07:25:00AM"; 
var parts = date.replace(/([AP]M)$/i, " $1").split(/[^0-9a-z]+/ig); 

var date = "05June2012"; 
var parts = date.replace(/([a-z]+)/i, " $1 ").split(/[^0-9a-z]+/ig); 
+0

ジェネリックスプリッタを書くことができますが、結果の配列で何を期待するかを知る必要があります。したがって、構文解析に関する有用な目的があるかどうかはわかりません。つまり、入力の形式がわからない場合、結果の配列はサイズが異なり、さまざまな場所に異なる種類の要素があります。あなたはどうしたらいいのでしょうか? –

0

日は、あなたが使用できる形式に常にある場合:

var parts = date.match(/([0-9]{2})-([0-9]{2})-([0-9]{4})\s([0-9]{2}):([0-9]{2}):([0-9]{2})(AM|PM)/).splice(1)

0

私はあなたがしたいフィールドを解析するために、日付のライブラリを使用します。そうすれば、複数の書式を扱うことができ、正規表現での解析について心配する必要はありません。 DateJSは少し古いですが、解析にはうまくいきます。

関連する問題