常用正则表达式语法

转自:http://www.codeorg.com/doc/54e93f4c5b965cbb0bd9c823

1.简单的转义字符

/r, /n //代表回车和换行符 
/t   //制表符 
//   //代表 "/" 本身 

2.多种字符的匹配

/d //任意一个数字,0~9 中的任意一个  
/w //任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个  
/s //包括空格、制表符、换页符等空白字符的其中任意一个 
.  //小数点可以匹配除了换行符(/n)以外的任意一个字符 

3.修饰匹配次数

{n} //表达式重复n次,比如:"/w{2}" 相当于 "/w/w";"a{5}" 相当于 "aaaaa"  
{m,n} //表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"  
{m,} //表达式至少重复m次,比如:"/w/d{2,}"可以匹配 "a12","_456","M12344"...  
? //匹配表达式0次或者1次,相当于 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"  
+ //表达式至少出现1次,相当于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab"...  
* //表达式不出现或出现任意次,相当于 {0,},比如:"/^*b"可以匹配 "b","^^^b"... 


4.抽象意义的特殊符号

^ //与字符串开始的地方匹配,不匹配任何字符 
$ //与字符串结束的地方匹配,不匹配任何字符 
/b //匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符 
 
| //左右两边表达式之间 "或" 关系,匹配左边或者右边 
( ) //(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰 
     //(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到 

5.一些高级规则

(d)(/w+) //"/w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd" 
(d)(/w+)(d) //"/w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "/w+" 也能够匹配上最后一个 "d",但是为了使整个表达式匹配成功,"/w+" 可以 "让出" 它本来能够匹配的最后一个 "d" 
(d)(/w+?) //"/w+?" 将尽可能少的匹配第一个 "d" 之后的字符,结果是:"/w+?" 只匹配了一个 "x" 
(d)(/w+?)(d) //为了让整个表达式匹配成功,"/w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,从而使整个表达式匹配成功。因此,结果是:"/w+?" 匹配 "xxx" 

6.其他通用规则

/xXX //编号在 0 ~ 255 范围的字符,比如:空格可以使用 "/x20" 表示 
/uXXXX //任何字符可以使用 "/u" 再加上其编号的4位十六进制数表示,比如:"/中" 
 
/S //匹配所有非空白字符("/s" 可匹配各个空白字符) 
/D //匹配所有的非数字字符 
/W //匹配所有的字母、数字、下划线以外的字符 
/B //匹配非单词边界,即左右两边都是 "/w" 范围或者左右两边都不是 "/w" 范围时的字符缝隙 
 
^ //匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "/^" 
$ //匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "/$" 
( ) //标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "/(" 和 "/)" 
[ ] //用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "/[" 和 "/]" 
{ } //修饰匹配次数的符号。要匹配大括号,请使用 "/{" 和 "/}" 
. //匹配除了换行符(/n)以外的任意一个字符。要匹配小数点本身,请使用 "/." 
? //修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "/?" 
+ //修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "/+" 
* //修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "/*" 
| //左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "/|" 

7.表达式属性

Ignorecase //i:代表不区分大小写匹配。默认情况下,表达式中的字母是要区分大小写的。配置为 Ignorecase 可使匹配时不区分大小写。有的表达式引擎,把 "大小写" 概念延伸至 UNICODE 范围的大小写。 
Singleline //s:单行匹配,默认情况下,小数点 "." 匹配除了换行符(/n)以外的字符。配置为 Singleline 可使小数点可匹配包括换行符在内的所有字符。 
Multiline //m:代表可以进行多行匹配。默认情况下,表达式 "^" 和 "$" 只匹配字符串的开始 ① 和结尾 ④ 位置。如: 
		 
  //①xxxxxxxxx②/n		 
  //③xxxxxxxxx④		 
  //配置为 Multiline 可以使 "^" 匹配 ① 外,还可以匹配换行符之后,下一行开始前 ③ 的位置,使 "$" 匹配                      //④ 外,还可以匹配换行符之前,一行结束 ② 的位置。 
Global //g:代表可以进行全局匹配。主要在将表达式用来替换时起作用,配置为 Global 表示替换所有的匹配。 

8.常用应用

'codeorg.test.com'.replace(/(codeorg)\.([a-z]+)\.([a-z]+)/gi,'$1.$3') //返回codeorg.com 
/^[a-zA-Z0-9_-][\w.]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test('[email protected]') //返回true,验证邮件 
ng-pattern="/^[a-zA-Z0-9_-][\w.]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/" //可以在angularjs表单验证中加入 
/^([a-zA-Z]|[0-9]|[\u4e00-\u9fa5]){1,}$/.test('用户名') //用户名验证,允许字母,数字,中文 
 
'127.0.0.1'.replace(/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/gi,function(a,b,c,d,e){ 
	 
//a=127.0.0.1	 
//b=127	 
//c=0	 
//d=0	 
//e=1	 
return b+'-'+c;});  //返回127-0,多条匹配依次替换 
 
//pattern动态定义 
'5558'.match(new RegExp('[0-9]+')) //返回数组['5558'] 
var reg= new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Multiline); // RegexOptions一些选项 

猜你喜欢

转载自blog.csdn.net/fight_angel/article/details/44082861