用Java验证姓名,年龄,电话怎么写。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java验证姓名,年龄,电话怎么写。相关的知识,希望对你有一定的参考价值。

在JS里面验证了一次,姓名只能为汉字,不能为空,年龄只能为数字120以前,不能为空,电话只能为数字,且只能11位,不能为空 在Java 里面怎么再去验证一次。 求大神, 谢谢!紧急,12点以前要 可以加分。
在Servlet里能直接写吗? 取得页面的值。 怎么写


1、汉字验证

这个方法改一下就行了

/**

 * 计算字符串长度. 一个汉字的长度按2计算. 如果给定的字符串为null, 返回0.

 * 

 * @param str

 *            待计算长度的字符串

 * @return 字符串长度

 */
public static int strlen(String str) 
    if (str == null || str.length() <= 0) 
        return 0;
    
    int len = 0;
    char c;
    for (int i = str.length() - 1; i >= 0; i--) 
        c = str.charAt(i);
        if ((c >= '0' && c <= '9') || (c >= 'a' &amp;& c <= 'z')|| (c >= 'A' && c <= 'Z')) //字母, 数字
            len++;
         else 
            if (Character.isLetter(c))  //中文
                len += 2;
             else  //符号或控制字符

                len++;
            
        

return len;

2、电话

我给你个思路

就是把字符串转化为数字,然后用try catch  如果呢异常就表明是数字,至于长度length一下就行了,



或用这个

邮编号码:xxx.xxxx(都为数字)
固定电话号码:xx-xxxx-xxxx(都为数字)
手机号码:xxx-xxxx-xxxx(都为数字)
一般来说,基本的校验功能留给页面去处理,可以减轻服务器的负担。建议这些功能放在页面完成。

java中的正则表达式:

/**
 * java正则表达式来判断是否EMAIL邮件
 * 
 * @param number
 *            待检测字符串
 * @return 若是返回true,否则返回false
 */

import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
import org.apache.oro.text.regex.PatternMatcher;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;

public static boolean checkFomatNumber(String number) 
  //*Regexp匹配模式
  //String postCodeRegexp = "([0-9]3)+.([0-9]4)+";  //邮政编码的匹配模式
  //String phoneRegexp = "([0-9]2)+-([0-9]4)+-([0-9]4)+";//固话的匹配模式   
  String mobileRegexp = "([0-9]3)+-([0-9]4)+-([0-9]4)+"; //手机的匹配模式

  PatternCompiler compiler = new Perl5Compiler();
  PatternMatcher matcher = new Perl5Matcher();
  Pattern pattern = null;

  // Initialization of compiler, matcher, and input omitted;
  try 
      //pattern = compiler.compile(postCodeRegexp);
      //pattern = compiler.compile(phoneRegexp);
      pattern = compiler.compile(mobileRegexp);

   catch (MalformedPatternException e) 
      return false;
  

  if (matcher.matches(number, pattern))
      return true;
  else
      return false;
 

3、年龄跟电话差不多,也是转换为数字,然后比较一下是否大于120

追问

在Servlet里能直接写吗? 取得页面的值。 怎么写

追答

方法你会写吧
你写三个方法
逐一验证就行了,具体的代码没有

参考技术A 在java代码里面再重新验证啊,如再验证姓名:
if(userName!=null&&userName!="")
if(userName.matches("^[\u4e00-\u9fa5]*$"))
out.println("是中文的");
else
out.println("不是中文的");

else
out.println("姓名不能为空!");
参考技术B @SuppressWarnings("serial")
public class BizException extends RuntimeException
public BizException()
super();

public BizException(String message)
super(message);

public BizException(String message, Exception innerException)
super(message, innerException);

创建这样的一个自定义异常类,在你调用的时候就抛出下面这样的异常
//如果姓名为空
if(Helper.isNullOrEmpty(film.getName()))
throw new BizException("请输入名称");

servlet
if(null == nameString)
request.setAttribute("message", "请输入名称");
disp.forward(request, response);
return;
参考技术C 判断姓名是否汉字
public boolean gbk(String str)

boolean isGB2312=false;
if(!str.equals("") && !str.equals(null))
char[] chars=str.toCharArray();

for(int i=0;i<chars.length;i++)
byte[] bytes=(""+chars[i]).getBytes();
if(bytes.length==2)
int[] ints=new int[2];
ints[0]=bytes[0]& 0xff;
ints[1]=bytes[1]& 0xff;
if(ints[0]>=0x81 && ints[0]<=0xFE && ints[1]>=0x40 && ints[1]<=0xFE)
isGB2312=true;
break;




return isGB2312;

判断年龄
public boolean isAge(String age)
boolean isTrue = false;

if(!age.equals(null) && !age.equals(""))
Pattern pattern = Pattern.compile("[0-9]*");
if(pattern.matcher(age).matches())
int ageInt = Integer.parseInt(age);
if(ageInt < 120 && ageInt > 0)

isTrue = true;







return isTrue;


判断电话
public boolean isTel(String tel)
boolean isTrue = false;

if(!tel.equals(null) && !tel.equals(""))
Pattern pattern = Pattern.compile("[0-9]*");
if(pattern.matcher(tel).matches())
int telInt = Integer.parseInt(tel);
if(tel.length() < 11)

isTrue = true;







return isTrue;


直接编的,试试看OK不。追问

在Servlet里能直接写吗? 取得页面的值。 怎么写

本回答被提问者采纳
参考技术D 这个为啥不直接百度搜索呢

用java写一个冒泡排序,封装一个学生,学生有属性,姓名,年龄,已学生年龄排序

用java写一个冒泡排序,封装一个学生,学生有属性,姓名,年龄,已学生年龄排序

参考技术A 请楼主稍微看一下代码,理解一下构造方法,方法覆盖和封装,不然可能会看不懂我的代码,尽管我的代码是菜鸟级别的.

public class Test
@SuppressWarnings("null")
public static void main(String[] args)
Student[] students = new Student[4];//创建一个学生数组,以下进行初始化(了解一下构造方法)
students[0] = new Student("test1", 16);
students[1] = new Student("test2", 15);
students[2] = new Student("test3", 19);
students[3] = new Student("test4", 14);
//接下来就是进行冒泡排序了,其实和普通的冒泡排序是一样的
Student tempStudent = null;//用来做中间替换的
for (int i = 0; i < students.length; i++)
for (int j = 0; j < students.length; j++)
if (students[i].getAge()<students[j].getAge())
tempStudent = students[i];
students[i]=students[j];
students[j]=tempStudent;



for (Student student : students)
System.out.println(student);




//封装一个学生类
class Student
private String name;
private int age;

public Student(String name, int age)
this.name = name;
this.age = age;


public String getName()
return name;


public void setName(String name)
this.name = name;


public int getAge()
return age;


public void setAge(int age)
this.age = age;


@Override
public String toString()
return name+"\t"+age;


本回答被提问者采纳

以上是关于用Java验证姓名,年龄,电话怎么写。的主要内容,如果未能解决你的问题,请参考以下文章

用java写一个冒泡排序,封装一个学生,学生有属性,姓名,年龄,已学生年龄排序

编写一个JAVA程序 输入自己的姓名和年龄并输出 怎么写

SpringBoot之表单验证@Valid

用java语言定义一个客户要求类costomer,要求:

selenium java 怎么写验证

javascript编写验证电话号码的完整代码