javascript で正規表現を使用して文字列の 4 番目のスペースを削除する方法を探しています。
例: 「Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)」を「Wed Sep 19 2012」
javascript で正規表現を使用して文字列の 4 番目のスペースを削除する方法を探しています。
例: 「Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)」を「Wed Sep 19 2012」
var s = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
s.split(' ').slice(0, 4).join(' ');
ステップバイステップ:
> s.split(' ')
["Wed", "Sep", "19", "2012", "08:05:07", "GMT-0700", "(PDT)"]
> s.split(' ').slice(0, 4)
["Wed", "Sep", "19", "2012"]
> s.split(' ').slice(0, 4).join(' ')
"Wed Sep 19 2012"
または、代わりにのパラメーターを削除slice
して使用します。limit
split()
var s = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var newValue = s.split(' ', 4).join(' ');
これには本当に正規表現が必要ですか?これは非常に標準化された日付文字列です... 3 文字の曜日、3 文字の月、2 文字の日、4 文字の年... 唯一の問題は、日付がゼロで埋められるかどうかです。
str.substring(0,15);
日付番号が埋め込まれていない場合、15 番目の文字がスペースの場合は 14 文字になります。それ以外の場合は、上記で問題ありません。
以下は、文字列から 4 番目のスペース (およびそれに続くすべて) を削除します。
text = text.replace(/^((?:[^ ]* ){3}[^ ]*) [\S\s]*/, "$1");
正規表現はこれには最適ではありませんが、次のようにすることができます。
var string = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var regex = /^((\S+\s*?){4})(\s+.*)$/;
var stripped = string.replace(regex, "$1");
これは、スペース以外の後にスペースが続き、その後行末までの4つのケースに一致します。置換では最初の一致が使用され、残りは無視されます。
最初のグループの\s
内側は遅延マッチングされるため、末尾のスペースは自動的に取り除かれます。残念ながら、これにより正規表現が遅くなりますが、通常の入力ではそれほど顕著ではありません。
ただし、実際に ISO 標準の日付文字列を解析しようとしている場合は、paddy が正しいので、末尾を切り落とす必要があります。Joao が示唆するように、より通常の処理を行うこともできます。
ほとんどの場合、正規表現はおそらく必要ないことを覚えておいてください。それらは実際にはかなり粗雑なツールです...
正規表現を使ってパターンを検索し、そこから文字列を切り捨てた方がいいと思います。
var str = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var regEx = new RegExp("\\s\\d+\\:"); // pattern match for ' dd:'
var truncatedStr = str.substring(0, str.search(regEx));
時間の直前の文字列が必要ないことはわかっています。したがって、「dd:」の時間パターンに一致する正規表現を作成します。str.search(regEx) を使用すると、パターンの開始インデックスが返されます。この場合は 15 になります。したがって、メイン文字列で 0 から 15 までの部分文字列を取得すると、必要な結果として "Wed Sep 19 2012" が返されます。