質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

4140閲覧

JavaScriptのスペース削除について

anna10

総合スコア24

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/03/21 11:38

JavaScriptのスペース削除についての質問です。以下のコードで、入力された値が空白又はAllブランクだった時の処理をしています。ここに、前後に全角半角スペースが入力された場合は、それを削除する、という処理を入れたいので、以下のようにしています。

//function trim(nameTXT) {
return nameTXT.replace(/^[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+$/g, "");
}

// 未入力またはスペース入力時のアラート及びフォーカス処理関数
function check() {

var nameTXT = document.formMerchandise.name.value;

if(trim(nameTXT).match(/ |\s+/)||trim(nameTXT)==""){
alert("商品名を入力してください");
document.formMerchandise.name.focus();
return false;

}

if(trim(nameTXT)>25){
alert("商品名は25文字までです");
document.formMerchandise.name.focus();
return false;

}
return true;
}

ネットを参考にしながらではあるのですが、①で自作メソッドを作成し、その中で「受け取った文字の前後にある全角半角スペースを削除して戻す」という処理を実装してみました。半角スペースに関しては期待通りの処理を行えたのですが、全角スペースに関しては削除されず、文字として認識されてしまっています。

例えば
(半角スペース)
" 商品名 "→"商品名"

(全角スペース)
" 商品名 "→" 商品名 "

となってしまいます。半角スペースが削除されているので後少しとは思うのですが、どなたか教えて頂けないでしょうか?よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

lang

1function removeSpace(txt){ 2 if(txt !== ""){ 3 return txt.replace(/^([\t\s\n\r\ ]?)([^\t\s\n\r\ ]+)([\t\s\n\r\ ]?)$/g,"$2"); 4 } 5}

全角に対応してみました。
文字列の途中にスペース等が挟まるというのは想定していません。
前後のみのスペースであれば消えるはずです。
あと、全角は一応エスケープしてます(Shift-JISの頃の名残です)。
エンコードが入り乱れてなく、utf-8固定とかであれば、
文字コードで指定してあげるといいかもしれません。

投稿2015/03/23 04:03

編集2015/03/23 04:07
OV222

総合スコア47

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

[ \t\r\n] → [ \t\r\n]

全角空白も追加してください。

投稿2015/03/23 02:00

yunn

総合スコア144

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

lang

1//@cc_on 2( function ( doc ) { 3 doc./*@if ( @_jscript ) attachEvent( 'on' + @else@*/ addEventListener( /*@end@*/ 'keyup', function ( e ) { 4 var t = e./*@if ( @_jscript ) srcElement @else@*/ target /*@end@*/; 5 var reg = /^\s+|\s+$/; 6 7 if ( t.tagName == 'INPUT' && t.name == 'name' && reg.test( t.value ) ) { 8 t.value = t.value.replace( reg, '' ); 9 if ( t.value.length > 25 ) { 10 // 俺ならここでアラートはしない、するなら表示非表示 11 // 常に表示させていてもいいメッセージだとは思うけど 12 alert( '...' ); 13 } 14 } 15 }, false ); 16})( document );

lang

1<input type="text" name="name" />

投稿2015/03/21 14:15

編集2015/03/22 00:37
miya

総合スコア81

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問