A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙沛   /  2012-9-3 15:50  /  3254 人查看  /  38 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

杨卓儒 发表于 2012-9-3 18:14
没懂,不要域名了?   你意思是 a@.com? 不明白啊

因为是要控制总长度为6.
你不用管什么意思,我就是为了完成这样的小功能而已,太简单的正则写起来也没有意思.
回复 使用道具 举报
马镱洵 发表于 2012-9-3 18:23
因为是要控制总长度为6.
你不用管什么意思,我就是为了完成这样的小功能而已,太简单的正则写起来也没有意 ...
  1. if(emailName.length>6)
  2. {
  3.     flag=false;
  4.     return;
  5. }
  6. else
  7. {
  8.    flag=emailName.matches(regex);
  9. }
复制代码
呵呵,这不就完了啊
回复 使用道具 举报
杨卓儒 发表于 2012-9-3 18:39
呵呵,这不就完了啊

你的正则表达式呢,可不是只控制总长度啊,你看功能需求:
1 所要匹配的字符串的总长度为6.
2 第一个字符只能为字母.
3 要有@.xxx的格式.
回复 使用道具 举报
本帖最后由 杨卓儒 于 2012-9-3 18:52 编辑
  1. if(emailName.length()>6)
  2. {
  3.     flag=false;
  4.     return;
  5. }
  6. else
  7. {
  8.    flag=emailName.matches(^[a-zA-Z0-9_]+@\\.[a-zA-Z]{3}$);
  9. }
复制代码
这次验证你那个还不行的话 我直播吃S
回复 使用道具 举报
马镱洵 发表于 2012-9-3 18:43
你的正则表达式呢,可不是只控制总长度啊,你看功能需求:
1 所要匹配的字符串的总长度为6.
2 第一个字符只 ...

试试上面的行不
回复 使用道具 举报
本帖最后由 马镱洵 于 2012-9-3 18:56 编辑
杨卓儒 发表于 2012-9-3 18:50
试试上面的行不


输入"a@.com"确实可以.
但是输入大于6个字符还是可以,比如输入a3@.com也还可以,这样就不对了.
说明你的总长度也没有控制为6的.
回复 使用道具 举报
马镱洵 发表于 2012-9-3 18:53
输入"a@.com"确实可以.
但是输入大于6个字符就不行了,比如输入"a3@.com"就不行.
说明你的总长度也没有控 ...

ca , 明明可以啊,我这里输入的a3@.com 就显示的false  
回复 使用道具 举报
马镱洵 发表于 2012-9-3 18:53
输入"a@.com"确实可以.
但是输入大于6个字符还是可以,比如输入a3@.com也还可以,这样就不对了.
说明你的总 ...


回复 使用道具 举报
杨卓儒 发表于 2012-9-3 18:55
ca , 明明可以啊,我这里输入的a3@.com 就显示的false

上面是我说反了,我要的就是总长度只能是6啊.
回复 使用道具 举报
马镱洵 发表于 2012-9-3 18:53
输入"a@.com"确实可以.
但是输入大于6个字符还是可以,比如输入a3@.com也还可以,这样就不对了.
说明你的总 ...

大哥,你输出的是什么啊 要输出flag啊,不输flag当然不提示是对是错了,我忘记加上去了
回复 使用道具 举报
杨卓儒 发表于 2012-9-3 18:55
ca , 明明可以啊,我这里输入的a3@.com 就显示的false

把那个加号去掉就可以了.
回复 使用道具 举报
本帖最后由 杨卓儒 于 2012-9-3 19:07 编辑
马镱洵 发表于 2012-9-3 18:53
输入"a@.com"确实可以.
但是输入大于6个字符还是可以,比如输入a3@.com也还可以,这样就不对了.
说明你的总 ...

完整版来了

  1. class  mailDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 mail();
  6.         }

  7.         public static void mail()
  8.         {
  9.                 String mailName ="a3@.com";
  10.                 System.out.println(mailName);
  11.                 if(mailName.length()>6)
  12.                 {
  13.                         System.out.println(false);
  14.                         return;
  15.                 }
  16.                 else
  17.                 {
  18.                         String reg ="^[a-zA-Z0-9_]+@\\.[a-zA-Z]{3}+[        DISCUZ_CODE_0        ]quot;;
  19.                         System.out.println(mailName.matches(reg));
  20.                 }
  21.         }
  22. }
复制代码
回复 使用道具 举报
杨卓儒 发表于 2012-9-3 18:55
ca , 明明可以啊,我这里输入的a3@.com 就显示的false

"[a-zA-Z]{3}"

你这样就写死了,这样就代表"a@.com"中的com只能为三个字符了,万一人家是二个字符呢,比如说"cn",这样怎么办呢.
回复 使用道具 举报
马镱洵 发表于 2012-9-3 18:59
把那个加号去掉就可以了.

嗯,但是不碍事儿,如果你输俩com直接大于6了,false了
回复 使用道具 举报
杨卓儒 发表于 2012-9-3 18:58
大哥,你输出的是什么啊 要输出flag啊,不输flag当然不提示是对是错了,我忘记加上去了 ...
  1. /**
  2. * 邮箱要以字母开头,包括6~18个字符,包括字母、数字、下划线
  3. */
  4. import java.io.BufferedReader;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;

  7. public class CheckEmailDemo {

  8.         public static void main(String args[]) {
  9.                 CheckEmail();
  10.         }

  11.         public static void CheckEmail() {
  12.                 String emailName = null;
  13.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  14.                 boolean flag = false;
  15.                 System.out.print("请输入邮箱号:");
  16.                 String regex = "(^[a-zA-Z0-9_]+@\\.[a-zA-Z]{3}$)";// 此处要怎么写呢?

  17.                 // String regex = "^([a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,3}){6}";
  18.                 try {
  19.                         emailName = br.readLine();
  20.                         flag = emailName.matches(regex);
  21.                         if (flag)
  22.                                 System.out.println("邮箱地址" + emailName + "格式是正确的。");
  23.                         else
  24.                                 System.out.println("邮箱地址" + emailName + "格式是非法的。");
  25.                 } catch (Exception e) {
  26.                         e.printStackTrace();
  27.                 } finally {
  28.                         if (br != null) {
  29.                                 try {
  30.                                         br.close();
  31.                                 } catch (IOException e) {
  32.                                         e.printStackTrace();
  33.                                 }
  34.                         }
  35.                 }
  36.         }

  37. }
复制代码
C:\Documents and Settings\Administrator\桌面\QQ截图20120903190322.jpg
回复 使用道具 举报
马镱洵 发表于 2012-9-3 19:01
"[a-zA-Z]{3}"

你这样就写死了,这样就代表"a@.com"中的com只能为三个字符了,万一人家是二个字符呢,比如 ...

吧{3}改成{1,}不就完了啊,谢谢你让我水到中级黑马了,嘿嘿
回复 使用道具 举报
杨卓儒 发表于 2012-9-3 18:58
大哥,你输出的是什么啊 要输出flag啊,不输flag当然不提示是对是错了,我忘记加上去了 ...

你把这代码拷贝过去吧,在控制台输入a3@.com吧,保证也是true的,这样就不是把长度控制为6了.
不过你刚刚的正则表达式中,只要把加号去掉,就可以保证控制为6的长度了.但是这样叫写死了,如果最后的字母不是com,而是cn呢,那你这正则表达式又不能用了.
回复 使用道具 举报
杨卓儒 发表于 2012-9-3 19:04
吧{3}改成{1,}不就完了啊,谢谢你让我水到中级黑马了,嘿嘿

{3}改为{1,}
那么你输入"a@.cn"也是正确的,你要知道"a@.cn"只有5个字符啊,我是要控制在6个字符啊.
回复 使用道具 举报
杨卓儒 发表于 2012-9-3 19:00
完整版来了

验证长度还玩什么正则,输入输入长度不为6的字符串,就不通过正则来匹配,那还研究个啥啊.我摆明了就是在研究正则啊.
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马