正则表达式

每次要用正则,第一想法就是先网上搜索有没有现成的表达式,然后再去看相关的正则规则。没有自己的理解,也不方便查阅。这两天网上看了一些相关的技术贴,总结以下一些常用的语法规则。

一、正则常用规则

1. 元字符(代表单词的开头或结尾、也就是单词的分界处。元字符中字母大写都表示反义)

元字符  定义           案例
        匹配单词的开始或结束 /hi/  hi(匹配成功)  history(匹配失败)                        
. 匹配换行符以外的任意字符         
*     匹配数量,重复任意次(包括0)   
+    匹配数量,重复0次或多次   
匹配数量,重复0次或1次   
匹配一位数字   
匹配任意的空白字符(空格、制表符(Tab)、换行符等)   
w     匹配字母或数字或下划线( 等同于[A-Za-z0-9_] )   
^和$   匹配字符串的开始和结束 /^[1-9]{5,12}$/   123456(匹配成功)  a123456(匹配失败)

注意:如果需要匹配跟元字符相同的字符,需要使用使用转义符"" 。 如:匹配"." : .   

2. 分支条件(|:类似于逻辑或,匹配时要注意表达式的顺序。)

   例:匹配11位的手机号或者是带4位区号的座机号。

var reg  = /^1d{10}|0d{3}-d{8}$/ ;   

3. 分组(():此时的括号表示分组的符号,不是元字符“(”,不需要转义)

   例:匹配有效IP。

var reg = /^((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$/ ;
// (2[0-4]d|25[0-5]|[01]?dd?).){3} : 三位数或两位数的有效IP匹配三次 , 并且每个段位的ip后面连接小数点 . (元字符,需要转义) 。

二、正则的定义

1. var reg = new RegExp("d") ;   // 当正则中需要用到变量的时候,则只能使用这种方式,否则会被当成字符串进行匹配
2. var reg = /d/ ;         

三、正则的调用

1. test() : 匹配成功返回true ,失败false           正则.test(字符串)
2. search() : 返回符合匹配规则的第一个字母的位置    字符串.search(正则)
3. match() : 返回符合匹配规则的内容的数组          字符串.match(正则)
4. replace() : 查找符合正则的内容,并将其替换成对应的字符串
               返回替换之后的内容    字符串.replace(正则,新的字符串/回调函数)
5. exec() : 同match

四、正则实例

1. 找重复项最多的字符个数

var str = "skdjkajkkkkkasapoerweriuruqo" ;
var arr = str.split("");  // 把字符串转换成数组
str = arr.sort().join("") ; // 数组进行排序再连接成字符串
console.log( str );  // aaadeeijjkkkkkkkoopqrrrssuuw
var value = "" ;
var index = 0 ;
var reg = /(w)1+/g ;
str.replace( reg , function($0,$1){
  console.log( $0 );  // aaa ee jj kkkkkkk oo rrr ss uu  每次匹配成功的结果
  console.log( $1 );  // a e j k o r s u  每次匹配成功的结果中的第一个子项
  if( index<$0.length ){
    index = $0.length ;
    value = $1 ;
  }});
console.log("重复字数最多的是:"+value+",重复次数为"+index +"次"); //重复字数最多的是:k,重复次数为7次

2. 匹配邮箱 

var reg = /^w+@[a-z0-9]+(.[a-z]+){1,3}$/ ;
var str = "18273465468@163.com" ;
console.log( reg.test(str) );   // true

 借鉴博客地址:

1. http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

2. http://www.cnblogs.com/moqing/p/5665126.html

原文地址:https://www.cnblogs.com/bian21/p/5760806.html