pr("abc".matches(""));
pr("a8729a".replaceAll("\\d", "-"));
Pattern p = Pattern.compile("\\w{3}");
Matcher m = p.matcher("dth");
pr(m.matches());
pr("aaaaaaaa".matches("a*"));
pr("aaaa".matches("a+"));
pr("".matches("a*"));
pr("a".matches("a?"));
pr("".matches("a?"));
pr("3235364546757555".matches("\\d{3,100}"));
pr("192245".matches("\\d{1,3}[0-2][0-9][0-9]"));
pr("a".matches("[^fjkl]"));
pr("R".matches("[A-Z&&[RFG]]"));
pr("shivareemmsdo_1018".matches("\\w{6,20}"));
pr("\\".matches("\\\\{0,5}"));
pr("hello sir!".matches("^h.*"));
pr("hello sir!".matches(".*r!$"));
pr("hello sir!".matches("^h[a-z]{1,}\\b.*r!$"));
pr("hello sir!".matches("^h.*r!$"));
输出结果:
---------------------------------
true
a----a
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
----------------------------------
概要:
-------------------------------------------------------------------------------------------------
正则表达式涉及的三个类
java.lang.String;
java.util.regex.Mather;
java.util.regex.Pattern;
* 零次或多次
+ 一此或多次
?零次或一次
在JAVA中“\”需要“\\”来表示
在正则表达式中一个“\”需要“\\\\”来表示
“^”位于[]里意思是取反,位于[]外面意思是输入都开始。$代表结尾。
---------------------------------------------------------------------------------------------------
IP和身份证的例子:
---------------------------------------------------------------------------------------------------
用正则表达式验证ip地址和身份证代码实例如下:
<script language="javascript">
function checkIP()
{
obj=document.getElementById("ip").value
//ip地址
//var exp=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1
\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
//身份证
//var exp=/\b(((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])(\b|\.)){4}/
//var exp=/^(\d{15}|\d{17}[x0-9])/
var exp=/^([\d]{15}|[\d]{18}|[\d]{17}[x|X])$/
var reg = obj.match(exp);
if(reg==null)
{
alert("IP地址不合法!");
}
else
{
alert("IP地址合法!");
}
}
</script>
请输入IP地址:<input type="text" id="ip">
<input type="button" onclick="checkIP()" value="验证">
----------------------------------------------------------------------------------------------------
字符 |
x |
字符 x |
\\ |
反斜线字符 |
\0n |
带有八进制值 0 的字符 n (0 <= n <= 7) |
\0nn |
带有八进制值 0 的字符 nn (0 <= n <= 7) |
\0mnn |
带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) |
\xhh |
带有十六进制值 0x 的字符 hh |
\uhhhh |
带有十六进制值 0x 的字符 hhhh |
\t |
制表符 ('\u0009') |
\n |
新行(换行)符 ('\u000A') |
\r |
回车符 ('\u000D') |
\f |
换页符 ('\u000C') |
\a |
报警 (bell) 符 ('\u0007') |
\e |
转义符 ('\u001B') |
\cx |
对应于 x 的控制符 |
|
字符类 |
[abc] |
a、b 或 c(简单类) |
[^abc] |
任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] |
a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
[a-d[m-p]] |
a 到 d 或 m 到 p:[a-dm-p](并集) |
[a-z&&[def]] |
d、e 或 f(交集) |
[a-z&&[^bc]] |
a 到 z,除了 b 和 c:[ad-z](减去) |
[a-z&&[^m-p]] |
a 到 z,而非 m 到 p:[a-lq-z](减去) |
|
预定义字符类 |
. |
任何字符(与行结束符可能匹配也可能不匹配) |
\d |
数字:[0-9] |
\D |
非数字: [^0-9] |
\s |
空白字符:[ \t\n\x0B\f\r] |
\S |
非空白字符:[^\s] |
\w |
单词字符:[a-zA-Z_0-9] |
\W |
非单词字符:[^\w] |
|
POSIX 字符类(仅 US-ASCII) |
\p{Lower} |
小写字母字符:[a-z] |
\p{Upper} |
大写字母字符:[A-Z] |
\p{ASCII} |
所有 ASCII:[\x00-\x7F] |
\p{Alpha} |
字母字符:[\p{Lower}\p{Upper}] |
\p{Digit} |
十进制数字:[0-9] |
\p{Alnum} |
字母数字字符:[\p{Alpha}\p{Digit}] |
\p{Punct} |
标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ |
\p{Graph} |
可见字符:[\p{Alnum}\p{Punct}] |
\p{Print} |
可打印字符:[\p{Graph}\x20] |
\p{Blank} |
空格或制表符:[ \t] |
\p{Cntrl} |
控制字符:[\x00-\x1F\x7F] |
\p{XDigit} |
十六进制数字:[0-9a-fA-F] |
\p{Space} |
空白字符:[ \t\n\x0B\f\r] |
正则表达式的分组:
Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
String s = "123aa-34345bb-234cc-00";
Matcher m = p.matcher(s);
while(m.find()){
System.out.println(m.group(1));
System.out.println(m.group(2));
}
posted on 2009-04-06 14:52
shivaree 阅读(220)
评论(3) 编辑 收藏