基本语法:
m} |
以下来自百度经验:
1.整数或者小数:"^[0-9]+\.{0,1}[0-9]{0,2}$"
2.只能输入数字:"^[0-9]*$"
3.只能输入n位的数字:"^\d{n}$"
4.只能输入至少n位的数字:"^\d{n,}$"
5.只能输入m~n位的数字:"^\d{m,n}$"
6.只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"
7.只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"
8.只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"
9.只能输入非零的正整数:"^\+?[1-9][0-9]*$"
10.只能输入非零的负整数:"^\-[1-9][]0-9"*$"
11.只能输入长度为3的字符:"^.{3}$"
12.只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"
13.只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"
14.只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"
15.只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"
16.只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"
17.验证用户密码:"^[a-zA-Z]\w{5,17}$"
正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
18.验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"
19.只能输入汉字:"^[\u4e00-\u9fa5]{0,sans-serif; font-size:16px; line-height:28px">
20.验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"
21.验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"
22.验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"
正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
23.验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"
24.验证一年的12个月:"^(0?[1-9]|1[0-2])$"
正确格式为:"01"~"09"和"1"~"12"。
25.验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"
正确格式为;"01"~"09"和"1"~"31"。
26.匹配中文字符的正则表达式:"[\u4e00-\u9fa5]"
27.匹配双字节字符(包括汉字在内):"[^\x00-\xff]"
28.应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){returnthis.replace(/[^\x00-\xff]/g,"aa").length;}29.匹配空行的正则表达式: "\n[\s| ]*\r"
30.匹配html标签的正则表达式: "<(.*)>(.*)<\/(.*)>|<(.*)\/>"
31.匹配首尾空格的正则表达式: "(^\s*)|(\s*$)"
其他:
匹配特定数字:
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
只能输入数字:“^[0-9]*$”
只能输入n位的数字:“^d{n}$”
只能输入至少n位数字:“^d{n,}$”
只能输入m-n位的数字:“^d{m,n}$”
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输入非零的正整数:“^+?[1-9][0-9]*$”
只能输入非零的负整数:“^-[1-9][0-9]*$”
1.全匹配
String sql="kxw099" String regex="^[A-Za-z]+$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(sql); if(matcher.matches())//方法尝试将整个输入序列与该模式匹配。 {}
2.部分匹配
String sql ="create table user (id int(4) not null primary key auto_increment,degree double(16,2))"; String regex="(\\()(.+)(\\))"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(sql); if (matcher.find()) { System.out.println(matcher.group(0));//输出匹配部分 String group = matcher.group(); System.out.println(group.replaceAll(regex,"$1")); //System.out.println(matcher.group(1)); System.out.println(group.replaceAll(regex,"$2")); //System.out.println(matcher.group(2)); System.out.println(group.replaceAll(regex,"$3")); //System.out.println(matcher.group(3)); }
输出为:
1:(id int(4) not null primary key auto_increment,2))
2:(
3:id int(4) not null primary key auto_increment,2)
4:)
String sql2="insert into employee(id,name,salary,email) "; String RegExp="(insert into)(.+)([(])"; Pattern pattern=Pattern.compile(RegExp,Pattern.CASE_INSENSITIVE); Matcher matcher=pattern.matcher(sql2); System.out.println(matcher.groupCount()); if(matcher.find()) { String start=matcher.group(1); String body=matcher.group(2); String end=matcher.group(3); System.out.println("------------------------------------------------------"); System.out.println(start); System.out.println(body); System.out.println(end); System.out.println("------------------------------------------------------");
输出是:
------------------------------------------------------
insert into
employee
(
------------------------------------------------------
3.部分匹配(二)
String sql2 = "insert into employee(id,email) values (0,ejdef,2,fefefe)"; String rx = "\\([^\\)]+\\)"; Pattern pattern2 = Pattern.compile(rx); Matcher matcher2 = pattern2.matcher(sql2); while(matcher2.find()) { System.out.println(matcher2.group()); }输出为:
1.(id,email)
2.(0,fefefe)
4.部分匹配并替换
String s1 = "abc1(id,email)12()7**)"; String r1 = "(\\([^\\)]+\\))"; System.out.println(s1.matches(r1)); System.out.println(s1.replaceAll(r1,"cat"));
输出:
1.false
2.abc1cat12()7**)
5.4.部分匹配并替换(二)
Pattern p = Pattern.compile("cat"); Matcher m = p.matcher("one cat two cats in the yard"); StringBuffer sb = new StringBuffer(); while (m.find()) { m.appendReplacement(sb,m.group(0) +"@"); System.out.println(sb+"******"); } m.appendTail(sb); System.out.println(sb.toString());
输出是:
one cat@****** one cat@ two cat@****** one cat@ two cat@s in the yard
原文链接:https://www.f2er.com/regex/361896.html