Archive for the ‘Java’ category

邪恶的正则表达式-Java

February 7th, 2011

自由度的部落閣 A little funny site……

从网上收集了一些Java的正则表达式,如有错误,还请指正。刚开始学,以后发现精妙的会第一时间在 微薄分享!
这个东西真的太好了!!嘿嘿…干起坏事来也…呵!不过好在我还算个好孩子,遵纪守法。哈哈…期待赶紧多学些网络知识…
言归正传,看下面例子。分为2部分。第二部分实用些,第一部分基础些。不过高手可以飘过了,都是初学者的东西。


1 。 ^\d+$   // 匹配非负整数(正整数+ 0)
2 。 ^[0-9]*[1-9][0-9]*$   // 匹配正整数
3 。 ^((-\d+)|(0+))$   // 匹配非正整数(负整数 + 0)
4 。 ^-[0-9]*[1-9][0-9]*$  // 匹配负整数
5 。 ^-?\d+$     // 匹配整数
6 。 ^\d+(\.\d+)?$   // 匹配非负浮点数(正浮点数 + 0)
7 。 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$   // 匹配正浮点数
8 。 ^((-\d+(\.\d+)?)|(0+(\.0+)?))$   // 匹配非正浮点数(负浮点数 + 0)
9 。 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$   // 匹配负浮点数
10 。 ^(-?\d+)(\.\d+)?$   // 匹配浮点数
11 。 ^[A-Za-z]+$   // 匹配由26个英文字母组成的字符串
12 。 ^[A-Z]+$   // 匹配由26个英文字母的大写组成的字符串
13 。 ^[a-z]+$   // 匹配由26个英文字母的小写组成的字符串
14 。 ^[A-Za-z0-9]+$   // 匹配由数字和26个英文字母组成的字符串
15 。 ^\w+$   // 匹配由数字、26个英文字母或者下划线组成的字符串
16 。 ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$     // 匹配email地址
17 。 ^[a-zA-z]+:       // 匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$   // 匹配url
18 。匹配中文字符的正则表达式: [\u4e00 - \u9fa5]
19 。匹配双字节字符(包括汉字在内):[^\x00-\xff]


20 。应用:
计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)


String.prototype.len = function(){
return this .replace([^\x00-\xff]/g,"aa").length;
}

21 。\n[\s|]*\r           //匹配空行的正则表达式
22 。/< (.*)>.*< \/\1>|< (.*)\/>/    //匹配HTML标记的正则表达式
23 。(^\s*)|(\s*$)*        //匹配首尾空格的正则表达式

正则表达式用例

  1. * 1 、^\S+[a-zA-Z]$ 不能为空 不能有空格 只能是英文字母
  2. * 2 、\S{6,} 不能为空 六位以上
  3. * 3 、 ^\d+$ 不能有空格 不能非数字
  4. * 4 、(.*)(\.jpg|\.bmp)$ 只能是jpg和bmp格式
  5. * 5 、 ^\d{4}\-\d{1,2}-\d{1,2}$ 只能是2004 – 10 – 22格式
  6. * 6 、 ^0$ 至少选一项
  7. * 7 、 ^0{2,}$ 至少选两项
  8. * 8 、 ^[\s|\S]{20,}$ 不能为空 二十字以上
  9. * 9 、 ^\+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(\.|\-))+[a-z]{2,6}$ 邮件
  10. * 10 、\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)* 输入多个地址用逗号或空格分隔邮件
  11. * 11 、 ^(\([0-9]+\))?[0-9]{7,8}$ 电话号码7位或8位或前面有区号例如( 022 ) 87341628
  12. * 12 、 ^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+(\,[a-zA-Z0-9_]+@[a-zA-Z 0-9_]+(\.[a-zA-Z0-9_]+)+)*$* 只能是字母、数字、下划线;必须有@和.同时格式要规范 邮件
  13. * 13 、 ^\w+@\w+(\.\w+)+(\,\w+@\w+(\.\w+)+)*$ 上面表达式也可以写成这样子,更精练。
  14. *14 、 ^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$ 还是邮件

P.S.:试了一些,有些好像不好用,有好心人邮件我下,在下会万分感激的!
P.P.S.:xxzj990 at gmail dot com

分享到开开   分享到新浪微博

利用java 获取当前路径

February 7th, 2011

自由度的部落閣 A little funny site……

分享到开开   分享到新浪微博

Java日期/时间格式化和时区设置

January 17th, 2011

自由度的部落閣 A little funny site……

一个小知识点,写博客备忘。
想在程序里调用系统时间,发现java.util.Date里竟然一大片过时的方法。原来关于日期/时间的方法全从JDK1.1后在java.util.Calendar里实现,而且更方便了。不过直接输出日期格式还是西方习惯,不爽。。。Google了下,发现在java.text.SimpleDateFormat里可以自定义,而且非常灵活。。。
但是还是有问题,不知为啥,我的机子提取的系统时间老是”格林尼治”标准时间!我的系统时区明明是+8区啊!!没办法,找到了更改Java系统时区的方法,在java.util.Calendar里。
下面以一个小例子,吧上面三个问题一一简单明了的展示,很简单,但很有用。高手飘过。。。
这是一个记录日志的小程序,它从命令行读取一段字符串,写入到文件,并为其加上日期。。。


import java.util.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.text.DateFormat;

public class Log {
  public static void main(String[] args) {
    String s = null;
    BufferedReader br = new BufferedReader(
                        new InputStreamReader(System.in));
    try {
      FileWriter fw = new FileWriter
                           ("life.log", true); //默认文件生成在当前目录。有ture表示追加,无ture为覆盖。。。
      PrintWriter log = new PrintWriter(fw);
      //TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));//另一种办法,设置默认时区为+8区,用Beijing不行。。无语
      SimpleDateFormat d = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//格式化时间
      TimeZone t = TimeZone.getTimeZone("Asia/Shanghai");//不管系统是啥时区,这里只获得+8区时间,不影响系统。。。
      d.setTimeZone(t);
      log.println("===="+d.format(new Date())+"====");
      log.println("-------------------------------");
      while ((s = br.readLine())!=null) {
        if(s.equalsIgnoreCase("q")) break;
        System.out.println();
        System.out.println("●" + s);
        log.println("  " + "●" + s);
        log.flush();
      }
      log.println("-------------------------------");
      log.flush();
      log.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

分享到开开   分享到新浪微博

© 2010-2012 KermitLau 网站备案编号: 天朝ICP备00000001 -- Copyright notice by Blog Copyright