0

データ:

"Sun Sep 30 2012 12:37:24 GMT-0700 (Pacific Daylight Time)"

正規表現では、リテラルを作成せずに「2012 年 9 月 30 日」を取得しようとしています/Sep\s\d\d\s2012/

「2012 年 9 月 30 日」だけがキャプチャされるように、「Sun」と「12:37:24....」をほとんど取り出したいと思います。

JavaScript REGEX でこれを行うにはどうすればよいですか?

アップデート:

私はそれを作りましたが、それほどエレガントではありません:\w{3}\s\d{1,2}\s2\d\d\d

「最初の3文字とその後の1つのスペースを取り出して...日付形式をキャプチャして...その後は何も取らないでください」と言うことができるREGEXパターンはありますか?

4

5 に答える 5

1

splitspliceおよびを使用できますjoin

var date = "Sun Sep 30 2012 12:37:24 GMT-0700 (Pacific Daylight Time)" ;
var desiredResult = date.split(" ").splice(1, 3).join(" ");
于 2012-09-30T20:00:56.157 に答える
1

私には、日と月は常に 3 文字の長さであるように思われるため、検索される文字列は常に同じ長さで、常に同じ位置にあります。

"Sun Sep 30 2012 12:37:24 GMT-0700 (Pacific Daylight Time)".slice(4, 15)
于 2012-09-30T20:00:12.250 に答える
1

しないでください。ほぼ確実に JavaScript の日付から文字列への変換 (おそらく(new Date).toString(). スクリプトの多くのユーザーにとっては異なります。

代わりに、日付はすでに特定の形式になっている必要があります。PHPのように、実行しdate("Y-m-d H:i:s")てからそのまま使用するか、split(/[- :]/). または、既に Date オブジェクトがある場合は、get*()関数を使用してください。

私が間違っていて、あなたのフォーマットが実際にはロケールに関係なく毎回正確である場合、次のようなことができると思います:/[A-Z][a-z]{2} \d{2} \d{4}/

于 2012-09-30T20:00:23.247 に答える
0

「JSで3文字とスペースを言う方法」という質問に答える:

> "abc ".match("[A-Za-z]{3} ")
["abc "]
> "ab3 ".match("[A-Za-z]{3} ")
null
于 2012-09-30T20:03:20.483 に答える
0

あなたはただ使うことができますsubstring

var s = "Sun Sep 30 2012 12:37:24 GMT-0700 (Pacific Daylight Time)";
s = s.substring(4, 15); // "Sep 30 2012"

本当に正規表現を使用したい場合は、次を使用できます。

s = s.match(/\w{3}\s(\w{3}\s\d{1,2}\s2\d{3})/)[1]; // "Sep 30 2012"

substringしかし、正直なところ、日付は正規表現で解析することを意図したものではありませDate

于 2012-09-30T19:58:21.463 に答える