正则表达式

<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)); } 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容