プロが教えるわが家の防犯対策術!

こちらの記事で書かれているようなことを
http://www.relief.jp/itnote/archives/001896.php

JavaScript側、もしくはJava側で行いたいのですが良い方法はないでしょうか?

「年」と「月」と「日」を取り出したいと思っています。

今ちなみに下記のような感じで一応実現はしているのですが…。
正規表現をあまり使った事がなかったもので(久々なので)、使い方が正しいかも気になっております。

<▼サンプルソース1:直接value値を渡す場合>
<html>
<script type="text/javascript">
function replaceTest(str){
var hoge1 = str.replace(/[年]|[月]|[日]/g, "");
alert(戻り値として、年月日を変換した値を返します。);
return hoge1;
}
</script>
<body>
<form name="replaceForm">
<input type="text" onblur="replaceTest(this.value)" name="replaceText" value="2000年10月08日">

<▼サンプルソース2:オブジェクトを引数として、メソッドを跨いで結果を返す場合>
<html>
<script type="text/javascript">
function replaceTest(str){
var hoge1 = str.replace(/[年]|[月]|[日]/g, "");
return hoge1;
}

function replaceStart(obj){
var str1 = obj.value;
var str2 = replaceTest(str1);
alert("年月日が変換された値:" + str2);
}

</script>
<body>
<form name="ZeroForm">
<input type="text" onblur="replaceStart(this)" name="zeroText" value="2000年10月08日">
</form>
</body>
</html>

①「/g」の意味は、検索対象の文字列を全て置換するという意味でいいでしょうか?
②最終的に共通関数化しないといけないのですが、今の方法でも問題ないでしょうか?

質問者からの補足コメント

  • JavaScriptを書いたのですが、これでは読めませんね。
    すみません。汗

      補足日時:2015/05/25 20:33

A 回答 (2件)

命題の通りであれば、こんな感じですが


月や日は必ずしも左を0で埋めた二桁であるとは限りませんが
運用でカバーしていますか?

<script>
var str="2015年05月25日";
str=str.replace(/(\d{4})年(\d{2})月(\d{2})日/,"$1$2$3");
document.write(str);
</script>

例えば上記「05月」が「5(一桁数字)月」や「(半角スペース)5月」にならないという
担保があるのか・・・によって処理が若干かわります
    • good
    • 0

まず正規表現の問題点について。


> /[年]|[月]|[日]/g

 /[年月日]/g
で十分です。元のままでは[]を使う意味がありません。

① 「対象の文字列の内で一致する箇所すべて」という意味ですね。これ自体には「置換する」という意味はありません。

②「共通関数化」というのがどういう意味なのかこのコードだけからは読み取れないのですが、入ってくる文字列が正確にyyyy年mm月dd日という形式であるという絶対の保証があって、かつ、年・月・日の値を知る必要が一切ないというのであれば、特に問題はないでしょう。
自分だったらそんな保障は信じられないし、年・月・日の値が不要だというのは信じられないので、
 /^(\d{4})年(\d{2})月(\d{2})日$/
を match させてその結果から年・月・日の値を取り出しますが。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!