<small>
正则
正则是一个特殊的字符串,用来规范其他字符串的输入,验证输入的字符串是否满足一定的规范
如邮箱、手机号码等的校验。
通过正则表达式的学习,完成简单邮箱的校验
1、简单正则
[0-9]:0~9当中的一个
判断一输入为一个有效数字(整数)
String reg="[0-9]";
String inStr="8";
boolean flag=inStr.matches(reg);//true
[a-z]:a~z当中的一个
[0-9a-zA-z_]:数字 字母和 下滑下
非0~9中的其中一个 [^0-9] 表示取反,[abc]:非 abc 中的一个
2、转义字符表示正则
\d: 数字
\d:转义
\w: azAZ0~9_
\s: 空白字符(空格,tab,回车等)
\D: 非数字 (大写代表非其中的一个)
reg="\\w";
inStr="$"
flag=intStr.matches(reg);//false
3、联合正则
?表示0或者1个
+表示1到多个
*表示0到多个(通配符)
{n}表示 n 个
{n,m}表示 n 到 m 个(n,m 都包括)
{n,}表示 n 以上,n 到多个
reg="[0-9]{5}";
intStr="34567";
flag=intStr.matches(reg);//true
4、分组
(成员1|成员2|……)
5、正则表达式规范
^以此开通,$结尾
java 中没有反应,^ 与$没有多大的效果,有与没有都可以
javascript 中正则:^与$,有与没有完全不同
5、正则方法
String[] split(string reg)
对一个字符串进行拆分,并返回字符子串数组
可以写正则,更多的时候写的是字符数组
String str="i love u"
String reg="\\s";
String[] results=str.split(reg);
replace (string subStr,String replaceStr)
将原字符串中 subStr替换成 replaceStr(不支持正则)
replace All(string reg,String replaceStr)
将原字符串中 reg替换成 replaceStr(支持正则)
//脏话和谐
reg="(nmb|nnd|wqnmgb)";
String talkMessage="nnd,别跑,wqnmgb,nmd,有种你出来.";
talkMessage=talkMessage.replaceAll(reg,"****");
常用正则
Email:var pattern = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
var pattern=/\b(^['_A-Za-z0-9-]+(\.['_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/;
youbian:var pattern=/[0-9]{1}(\d+){5}/;
phone:var pattern=/((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)/;
var pattern=/^((\(\d{2,3}\))|(\d{3}\-))?1\d{10}$/;
nickname:var pattern = /^\w{4,20}|[\u4e00-\u9fa5]{2,20}$/;
password:var pattern = /^\w{6,20}$/;
方法一:
var re=/正则表达式/;
re.test($("txtid").val())
方法二:
$("txtid").val.match(/正则表达式/);
验证数字的正则表达式集
验证数字:^[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]*$
验证非负整数(正整数 + 0) ^\d+$
验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?
中国电话号码验证
匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222
正则表达式 "((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*"
中国邮政编码验证
匹配形式如:215421
正则表达式 "d{6}"
电子邮件验证
匹配形式如:justali@justdn.com
正则表达式 "w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"
身份证验证
匹配形式如:15位或者18位身份证
正则表达式 "d{18}|d{15}"
常用数字验证
正则表达式
"d{n}" n为规定长度
"d{n,m}" n到m的长度范围
非法字符验证
匹配非法字符如:< > & / ' |
正则表达式 [^<>&/|'\]+
日期验证
匹配形式如:20030718,030718
范围:1900--2099
正则表达式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字
匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位
// ////////////////////基本正则表达式///////////////////
//非空验证 function NotNull (str) { return (str!=""); }
//邮件地址验证
function checkEmail (str) {
//邮件地址正则表达式 isEmail1=/^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/;
//邮件地址正则表达式 isEmail2=/^.*@[^_]*$/;
//验证邮件地址,返回结果 return (isEmail1.test(str)&&isEmail2.test(str));
} //身份证验证 function checkIDCard (str) {
//身份证正则表达式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份证正则表达式(18位) isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
//验证身份证,返回结果 return (isIDCard1.test(str)||isIDCard2.test(str)); }
//IP验证 function checkIP (str)
{ //IP正则表达式 IP='(25[0-5]|2[0-4]\\d|1\\d\\d|\\d\\d|\\d)';
IPdot=IP+'\\.'; isIPaddress=new RegExp('^'+IPdot+IPdot+IPdot+IP+'$');
//验证IP,返回结果 return (isIPaddress.test(str)); }
//主页(网址)验证 function checkHomepage (str) {
//主页正则表达式 //isHomepage=/^\w+([\.\-]\w)*$/; isHomepage=/^\w+(\.\w+)+\.\w+$/;
//验证主页,返回结果 return (isHomepage.test(str)); }
//是否数字 function isNum (str) { //isNumber=/^([1-9]\d*(\.\d+)?)|(\d+(\.\d+))$/; isNumber=/^\d+(\.\d+)?$/;
//验证并返回结果 return (isNumber.test(str)); }
//是否整数 function isInt (str) { isInteger=/^\d+$/;
//验证并返回结果 return (isInteger.test(str)); }
//是否字母 function isChar (str) { isCharacter=/^[A-Za-z]+$/;
//验证并返回结果 return (isCharacter.test(str)); }