urizakaです。
現在、JSPの画面を作成しているのですが、その際に、テキストボックスに
入力された内容が半角文字だったら、○○文字以内かどうか?、全角だったら
××文字以内かどうか?、半角、全角の混合だったら××以内かどうかという
ルーチンを作りたいと思っているのですが、

・全角、半角を区別するために必要なメソッドがわからない(==で比較しても
良いのかどうかわからない)
・全角、半角の正規表現はどうすればいいのかわからない
・さらに混合の場合はどうすればいいのかわからない

 ため、どうして良いのかわからない状況です。もってる本などで調べてはみた
のですが…すみませんが、上記方法についてご存知の方がいらっしゃったら
教えてください。宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

 基本は1文字ずつ切り出してescape関数に渡し、元の値とescape後の値が等しければ半角、異なれば全角ということになります。


 ただし、ブラウザやバージョンによってエンコード方法が異なったり、2バイトコードの数え方が違ったりするので、確実性を求めるなら、ブラウザ/バージョンごとに処理を書いた方がよいでしょう。

参考URL:http://tohoho.wakusei.ne.jp/js/builtin.htm#escape, http://tohoho.wakusei.ne.jp/js/string.htm#length
    • good
    • 0
この回答へのお礼

urizakaです。
なるほど、escape関数で一文字づつ比較ですね・・・わかりました
早速試してみます。
 どうもありがとうございました。

お礼日時:2001/08/03 14:45

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

このQ&Aと関連する良く見られている質問

Q全角文字を半角にすると全角の”と’が変換されない理由と対策を!?

String.prototype.toAscii = function(){
return this.replace(/([!-~ ])/g,
function (char){return String.fromCharCode(char.charCodeAt(0) - 65248)} );
}
タイトル通りです。全角の「”」と「’」が半角文字に変換されません。
その理由と対策を教えていただけますか?
それと、根本的にこんなやりかたは、だめなのでしょうか?

Aベストアンサー

対策:
知らん。
#元々僕はそういう変換噛ます事に抵抗感ある人間なのでできることならやらないでほしいと思っている

原因:
http://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms
"はU+FF02 FULLWIDTH QUOTATION MARK
”はU+201D RIGHT DOUBLE QUOTATION MARK

Q氏名の入力チェックに全角スペースと半角スペースを許可したい

現在の関数は以下ですが、フォームのテキストボックス入力でスペースが入るとfalseを返します。
当方、ユニコードがまったくわからず、何とかヘルプしていただきたい。
半角スペース 全角スペースのキーボード入力を許可したい。

氏名のチェック関数
function checkIsZenkaku(value) {
return !/[^\u3041-\u3100\u3200-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]/.test(value);
}

氏名カナのチェック関数
function checkIsKana(str) {
return str.match(/^[ァ-ヶー]*$/);
}

Aベストアンサー

とりあえず単純なcheckIsKanaを使うとして

return str.match(/^[ァ-ヶー]*$/);
これは0文字以上なので最低限
return str.match(/^[ァ-ヶー]+$/);
とする必要があるでしょう

通常スペースは\sであらわされますが
タブ、改ページ、改行などスペース的なもの全てにマッチしますので
半角全角スペースだけであればそれを列記すればよいです
return str.match(/^[ァ-ヶー  ]+$/);
(ーの後ろに半角スペース、全角スペースを記載してあります)

ただし、氏名のチェックとなると先頭や末尾のスペースや、
スペースが連続しているもの、スペースだけの文字列などは除外したいはずです。
また、普通は名字と名前の間のスペースだけですが、
ミドルネームを許すかどうかでも変わってきます
「山本 スーザン 久美子」とか・・・
まずは仕様をよく考えた方がよいと思います

Q半角を全角に

<script language="javascript">
<!--
var dtToday = new Date;
var strMonth;
var strDate;

strMonth = dtToday.getMonth() + 1;
strDate = dtToday.getDate();

document.write(strMonth+"月"+strDate+"日");
//-->
</script>

これ全体に例えば書体指定(ふみゴシックなど)をすると、拾った変数が半角のため
適用されません。変数を全角にする方法なんてありますでしょうか?

よろしくお願いします。

Aベストアンサー

単純に,配列でデータを作成して置いて,
次のようにすると簡単だと思います。

--------------------------------------------
<script language="javascript">
<!--
var dtToday = new Date;
var strMonth;
var strDate;
var zenkakuArr = new Array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");

strMonth = dtToday.getMonth() + 1;
strDate = dtToday.getDate();

strMonth = zenkakuArr[strMonth-1];
strDate = zenkakuArr[strDate-1];

document.write(strMonth+"月"+strDate+"日");
//-->
</script>
--------------------------------------------

単純に,配列でデータを作成して置いて,
次のようにすると簡単だと思います。

--------------------------------------------
<script language="javascript">
<!--
var dtToday = new Date;
var strMonth;
var strDate;
var zenkakuArr = new Array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");

strMonth = dtToday.getMonth() ...続きを読む

Q半角と全角の文字数について

str=new String("教えてgoo");
s=str.length;

このようにすると、「s」の中には「6」という数字が代入されるのですが、
全角を2文字として計算するにはどうすればいいのでしょうか。
「s」の中には「9」が入るようにしたいんです。

よろしくお願いします。

Aベストアンサー

String.prototype.mlength=function(){
var len=0;
for(var i=0;i<this.length;i++){
var code=this.charCodeAt(i);
if(code>255) len++;
len++
}
return len;
}

var str=new String("教えてgoo");
var s=str.length;
alert(s); //6
var sm=str.mlength();
alert(sm);//9

Q全角英数字を半角英数字に置換する

全角英数字を半角英数字に置換するJavaScriptを探していて、
見つけはしたのですが、HTML側の書き方が分かりません。

下記がそのソースになります。
onBlurで動くようにしたい場合、どのようにHTML側を記述してやったらよいでしょうか。

/* 全角英数字を半角英数字に置換する */
function z2h_word(src) {
return src.replace(/([A-Za-z0-9_])/g,
function ($0) {
return String.fromCharCode($0.charCodeAt(0) - 65248);
});
}

変な質問で申し訳ないですが、わかる方教えて下さい。

Aベストアンサー

<p>
<input type="text" onBlur="toAscii(this)">
</p>

<script type="text/javascript">

function toAscii( e ) {
e.value = z2h_word( e.value );
}

function z2h_word(src) {
return src.replace(/([A-Za-z0-9_])/g,
function ($0) {
return String.fromCharCode($0.charCodeAt(0) - 65248);
});
}

</script>
それを、りようするのなら。


人気Q&Aランキング

おすすめ情報