OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

入力された文字列の制限

  • すぐに回答を!
  • 質問No.171847
  • 閲覧数423
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 33% (2/6)

こんにちわ、初心者プログラマーのRammyと申します。
現在webで使うツールを開発中なのですが、web上にある入力フォーム内に
入力された文字列について、

1.半角英数字及び_-.のみ入力可能にする(メールアドレス判断用)
2.半角数字のみ入力可能にする(電話番号などの判断用)
3.文字列の長さをチェックし、一定の長さを超えたら送信させない

以上の入力制限処理をJAVAで行いたいのです。
現在、空白チェックのみ、チェック用のBeansを作成し、その中に


public static boolean checkBlank(){
 if (kind == null || user_name == null
 || mail1 == null || mail2 == null
 || tel == null || subject == null || text == null ) {
 return false;
}

 if (kind .compareTo("") == 0 || user_name.compareTo("") == 0
 || mail1.compareTo("") == 0 || mail2.compareTo("") == 0
 || tel.compareTo("") == 0 || subject.compareTo("") == 0
 || text.compareTo("") == 0 ) {
 return false;
}
return true;
}

このように記述してありますが、Beans内に上記の1~3の機能をつけたし
たいのです。が、いったいどのように記述したらいいのかわかりません。
1・2に関しては、入力可能な文字をあらかじめ決めておいて、入力された
文字列を分解し、入力可能文字と一致するかどうか判断する、というイメージ
はできるのですが、どう書いたらいいものかわからないのです汗
3は、lengthメソッドをやはり使うのでしょうがどう書けばいいのか・・・汗

本当に初心者な質問で申し訳ないのですがご教授下さいませんでしょうか。
ヒントでもかまいませんのでご回答いただければ幸いです、宜しくおねがい
致します。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル7

ベストアンサー率 42% (9/21)

こんにちはRammyさん。 Beansは使った事無いのでわかりませんが、文字列のチェックならこんな感じでいかがでしょう? 1.メールアドレスのチェック public boolean chkMail(String str){  byte temp[] = str.getBytes();  boolean atmark = false;  if ( temp[0] < 97 ...続きを読む
こんにちはRammyさん。

Beansは使った事無いのでわかりませんが、文字列のチェックならこんな感じでいかがでしょう?

1.メールアドレスのチェック

public boolean chkMail(String str){
 byte temp[] = str.getBytes();
 boolean atmark = false;

 if ( temp[0] < 97 || 122 < temp[0] ) return false;
 for ( int i = 1; i < temp.length; i++) {
  if ( 97 <= temp[i] && temp[i] <= 122 || temp[i] == 45) {
   ;
  } else if ( 64 == temp[i] ) {
   if (atmark == true ) {
    return false;
   } else {
    atmark = true;
   }
  } else if (atmark == true && 46 == temp[i] ){
   ;
  } else {
   return false;
  }
 }
 if (atmark == false ) return false;
 return true;
}

2.半角数字のチェック

public boolean chkNumber(String str){
 byte temp[] = str.getBytes();
 for ( int i = 0; i < temp.length; i++) {
  if ( 48 <= temp[i] && temp[i] <= 57){
   ;
  } else {
   return false;
  }
 }
 return true;
}

3.文字数のチェック

public boolean chkLength(String str){
 if ( 文字数 <= str.length() ) {
  return false;
 }
 return true;
}

これは適当に作った物なんでもっといい方法とかあると思います。
漢字が入力された場合とかも全然考慮に入れてません。
参考程度にとどめてもらえればよいかと思います。
それでは、がんばってください。


  • 回答No.2
レベル10

ベストアンサー率 37% (64/169)

1,2の文字列のパターンチェックでしたら正規表現ライブラリを使いましょう。 超楽です。(正規表現を理解する必要がありますが。) JavaWorld 2001/4月号,8月号に特集されていました。 Java関連で仕事をなされているのなら 周りの誰かが持っているでしょう。 3の長さチェックは、可能ならまずMAXLENGTHで制限して、 さらに文字列の長さをチェックすればいいでしょう。 ...続きを読む
1,2の文字列のパターンチェックでしたら正規表現ライブラリを使いましょう。
超楽です。(正規表現を理解する必要がありますが。)

JavaWorld 2001/4月号,8月号に特集されていました。
Java関連で仕事をなされているのなら
周りの誰かが持っているでしょう。


3の長さチェックは、可能ならまずMAXLENGTHで制限して、
さらに文字列の長さをチェックすればいいでしょう。
  • 回答No.3
レベル7

ベストアンサー率 71% (5/7)

 横に判定するのではなく縦に判定すれば見通しがよくなると思います。 以下の例は、フォームから入力した文字列の長さと使用文字種を判定して結果を返すページとサーブレットの例です。 -----ページ----- <html> <head><title>Data Input</title></head> <body> < ...続きを読む
 横に判定するのではなく縦に判定すれば見通しがよくなると思います。
以下の例は、フォームから入力した文字列の長さと使用文字種を判定して結果を返すページとサーブレットの例です。

-----ページ-----

<html>
<head><title>Data Input</title></head>
<body>
<form action="http://localhost:8080/minnaservlet/171847" method="GET">
<script>
var name = new Array("kind", "user_name", "mail1", "mail2", "tel", "subject", "text");
for (var i = 0; i < name.length; i ++)
document.writeln(name[i] + "<input type='text' name='" + name[i] + "'><br>");
</script>
<input type="submit" value="send">
</form>
</body>
</html>

-----サーブレット-----

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class strcheck extends HttpServlet {

private boolean TelCheck(String s) {
if (!BlankCheck(s, 10)) return(false);
return(s.matches("[0-9]*"));
};

private boolean AddrCheck(String s) {
if (!BlankCheck(s, 20)) return(false);
return(s.matches("[[0-9][a-z][A-Z][-_.@]]*"));
};

private boolean BlankCheck(String s, int l) {
if (s == null) return(false);
if ((s.compareTo("") == 0) || (s.length() > l)) return(false);
return(true);
};

public void doGet(HttpServletRequest req, HttpServletResponse res) {

String kind = req.getParameter("kind");
String user_name = req.getParameter("user_name");
String mail1 = req.getParameter("mail1");
String mail2 = req.getParameter("mail2");
String tel = req.getParameter("tel");
String subject = req.getParameter("subject");
String text = req.getParameter("text");

try {res.setContentType("text/html");
PrintWriter PW = res.getWriter();
PW.println("<html><head><title>Check</title></head>");
PW.println("<body><h1>");

if (BlankCheck(kind, 1) && BlankCheck(user_name, 10) && AddrCheck(mail1) && AddrCheck(mail2) &&
TelCheck(tel) && BlankCheck(subject, 100) && BlankCheck(text, 100))
PW.println("Input OK");
else PW.println("Input NG");

PW.println("</h1><br></body></html>");

} catch (Exception ex) { System.out.println(ex.toString()+ "::Get"); };

};

}
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ