常见正则表达式(转)

正则是每个程序员绕不开的堡垒,只有把它攻下来。我觉得正则之所以难,第一难是需要记忆,第二难是要求具备抽象逻辑思维。 
签于网上太多的介绍都是一篇凶悍的短文,边看边理解可以,帮助记忆不行。又受五笔字型字根表口诀“白手看头三二斤...”的启发, 
试作“正则表达式助记口诀”又名“正则打油诗”,版本0.1,绝对原创,仿冒必究,:) 
注:本文仅为学习正则时为了便于记忆而作,不能代替系统而全面的学习过程,错漏之处,敬请指正! 
正则其实也势利,削尖头来把钱揣; (指开始符号^和结尾符号$) 
特殊符号认不了,弄个倒杠来引路; (指\. \*等特殊符号) 
倒杠后面跟小w, 数字字母来表示; (\w跟数字字母;\d跟数字) 
倒杠后面跟小d, 只有数字来表示; 
倒杠后面跟小a, 报警符号嘀一声; 
倒杠后面跟小b, 单词分界或退格; 
倒杠后面跟小t, 制表符号很明了; 
倒杠后面跟小r, 回车符号知道了; 
倒杠后面跟小s, 空格符号很重要; 
小写跟罢跟大写,多得实在不得了; 
倒杠后面跟大W, 字母数字靠边站; 
倒杠后面跟大S, 空白也就靠边站; 
倒杠后面跟大D, 数字从此靠边站; 
倒框后面跟大B, 不含开头和结尾; 
单个字符要重复,三个符号来帮忙; (* + ?) 
0 星加1 到无穷,问号只管0 和1; (*表0-n;+表1-n;?表0-1次重复) 
花括号里学问多,重复操作能力强; ({n} {n,} {n,m}) 
若要重复字符串,园括把它括起来; ((abc){3} 表示字符串“abc”重复3次 ) 
特殊集合自定义,中括号来帮你忙; 
转义符号行不通,一个一个来排队; 
实在多得排不下,横杠请来帮个忙; ([1-5]) 
尖头放进中括号,反义定义威力大; ([^a]指除“a”外的任意字符 ) 
1竖作用可不小,两边正则互替换; (键盘上与“\”是同一个键) 
1竖能用很多次,复杂定义很方便; 
园括号,用途多; 
反向引用指定组,数字排符对应它; (“\b(\w+)\b\s+\1\b”中的数字“1”引用前面的“(\w+)”) 
支持组名自定义,问号加上尖括号; (“(?<Word>\w+)”中把“\w+”定义为组,组名为“Word”) 
园括号,用途多,位置指定全靠它; 
问号等号字符串,定位字符串前面; (“\b\w+(?=ing\b)”定位“ing”前面的字符串) 
若要定位串后面,中间插个小于号; (“(?<=\bsub)\w+\b”定位“sub”后面的字符串) 
问号加个惊叹号,后面跟串字符串; 
PHPer都知道, !是取反的意思; 
后面不跟这一串,统统符合来报到; (“\w*d(?!og)\w*”,“dog”不符合,“do”符合) 
问号小于惊叹号,后面跟串字符串; 
前面不放这一串,统统符合来报到; 
点号星号很贪婪,加个问号不贪婪; 
加号问号有保底,至少重复一次多; 
两个问号老规矩,0次1次团团转; 
花括号后跟个?,贪婪变成不贪婪; 
还有很多装不下,等着以后来增加。 
一些常用的正则表达式 
"^\d+$"  //非负整数(正整数 + 0) 
"^[0-9]*[1-9][0-9]*$"  //正整数 
"^((-\d+)|(0+))$"  //非正整数(负整数 + 0) 
"^-[0-9]*[1-9][0-9]*$"  //负整数 
"^-?\d+$"    //整数 
"^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 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+)?)|(0+(\.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+)?$"  //浮点数 
"^[A-Za-z]+$"  //由26个英文字母组成的字符串 
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串 
"^[a-z]+$"  //由26个英文字母的小写组成的字符串 
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串 
"^\w+$"  //由数字、26个英文字母或者下划线组成的字符串 
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址 
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url 
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil 
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码 
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址 
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 
匹配双字节字符(包括汉字在内):[^\x00-\xff] 
匹配空行的正则表达式:\n[\s| ]*\r 
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 
匹配首尾空格的正则表达式:(^\s*)|(\s*$) 
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
匹配网址URL的正则表达式:^[a-zA-z]+://(://w+(-//w+)*)(//.(//w+(-//w+)*))*(//?\\S*)?$ 
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 
G:看完了口诀,里边总计的内容很多。但关于命名组的示例是错的,还有环视的描述是不准确的,环视不占有字符,是进行位置的匹配,在某个点进行前窥后探。

转自:http://www.cnblogs.com/peida/archive/2009/05/10/1453519.html

时间: 2024-08-29 15:59:07

常见正则表达式(转)的相关文章

【javascript】javascript常见正则表达式实例

javascript常见正则表达式实例 实例来源 1 var myRegExp = { 2 // 检查字符串是否为合法QQ号码 3 isQQ: function(str) { 4 // 1 首位不能是0 ^[1-9] 5 // 2 必须是 [5, 11] 位的数字 \d{4, 9} 6 var reg = /^[1-9][0-9]{4,9}$/gim; 7 if (reg.test(str)) { 8 console.log('QQ号码格式输入正确'); 9 return true; 10 }

js常见正则表达式验证及方法(一)

正则表达式里面常见的值: *表示前面子表达式(字符.文字.字符串等)出现0次或者多次: +表示前面子表达式出现1大于等于一次: ?表示前面子表达式出现0次或者1次: x|y:表示匹配x或者y; [xyz]:匹配任何一个字符:例如:[abcd]可以匹配apple或者bus; [a-z]:匹配小写字母: [^a-z]:匹配不在a~z之外的任意字符: \d 匹配一个数字字符等价于[0-9]; \D匹配一个非数字字符等价于[^0-9]; \w 匹配包括下划线的任意单词字符,等价于[A-Za-z0-9];

常见正则表达式

一.校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数.负数.和小数:^(\-|\+)?\d+(\.\d+)?$ 9 有两位小数的正实数:^[0-9]

常见正则表达式集合

Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 电话号码("XXX-XXXXXXX"."XXXX-XXXXXXXX"."XXX-XXXXXXX"."XXX-XXXXXXXX"."XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$ 密码(以字母开头,长度在6~18之间,只能包含字母.数字

常见正则表达式整理(欢迎各位继续添加)

名称 表达式 电话号码 /^(\d{3,4}-?)?\d{7,9}$/g 或 ^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$ 国内电话号码(0511-4405222.021-87888822) \d{3}-\d{8}|\d{4}-\d{7} 手机号码 /^(((13[0-9]{1})|(15[0-35-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/ 或 ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0

常见正则表达式的使用

^[A-Za-z0-9]{6,17}$   :以大小写字母和数字组成的,最小6位,最大17位的字符串 ^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$    :必须需要的是  单字符 @ 单字符 点 单字符 

js常见正则表达式验证及说明

var verify = { /** * [判断数据是否为整数] * @param {[Number]} v [数字] */ isInteger(v) { return /(?:^0$)|(?:^[^0\.]\d*?$)/.test(v); }, /** * [判断是否为6位验证码] * @param {[String]} v [验证码] */ isCode: function(val){ return /^\d{6}$/.test(val); }, /** * [将银行卡号按四位分隔] * @

JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有

Python re正则表达式速查

常见正则表达式符号和特殊字符 表示法 描述 正则表达式示例 符号 re1|re2 匹配正则表达式re1或re2 foo|bar . 匹配任意除换行符"\n"外的字符 a.c ^ 匹配字符串开头,在多行模式中匹配每一行的开头 ^Dear $ 匹配字符串末尾,在多行模式中匹配每一行的末尾 /bin/*sh$ * 匹配前一个字符0或多次 [A-Za-z0-9]* + 匹配前一个字符1次或多次 [a-z]+\.com ? 匹配一个字符0次或1次 goo? {} {m}匹配前一个字符m次,{m,