正则匹配模式汇总(一)

 正则表达式提供另一种强大的文本搜索和处理方式,对于正则表达式,不同语言有着不同的实现,JavaScript采用的Perl5的语法。对于极少数匹配模式是简单的全字符文本的情况,我们往往会采用indexOf这样的方法,但是多数情况下,匹配模式往往都更为复杂。

1、语法

  1)在JavaScript中我们可以采用内建构造器RegExp()来创建正则表达式的对象;

     var re = new RegExp("j.*t")

  2)当然除了使用RegExp对象,我们可以采用更为简便的正则文本标记法

     var re = /j.*t/

2、RegExp对象属性

  1、global:  是否打开全局搜索(默认是false,只匹配到第一个)

  2、ignoreCase: 设置大小写相关性

  3、multiline: 设置是否跨行搜索

  4、lastIndex:搜索的开始索引位置,默认为0

  5、source: 用于存储正则表达式的匹配模式

除了laseIndex外,上面所有属性在设置之后都不再被修改,也就是说:

  var re = /j.*t/ig;   

  re.global   // true;   

  re.global = false;   

  re.global   // true;

3、RegExp对象的方法

  RegExp对象中有两种方法可用于查找匹配内容的方法:text()和exec()。这两种方法的参数都是一个字符串,text()方法返回的是一个布尔值、而exec()返回的由匹配到字符串所组成的数组。

/j.*t/.test("JavaScript");         //false
/j.*t/i.test("JavaScript");        //true
/j.*t/i.exec("JavaScript")[0];   //"JavaScript"

  以正则表达式为参数的字符串的方法

  1)match()        返回一个包含匹配内容的数组

  2)search()      返回的是第一个匹配内容的所在位置

  3)replace()  能将匹配的文本替换程指定字符串

  4)split()    根据正则分割若干个数组元素

 match()方法

  var s = new String(‘HelloJavaScriptWorld‘);   

  s.match(/a/)     //["a"]   

  s.match(/a/g)    // ["a","a"]  

  s.match(/j.*a/i) // ["Java"]

  search()方法

    search方法会返回匹配字符串的索引位置(从0开始)

    s.search(/j.*a/i);  //5

  replace()方法

    replace用于将匹配的文本替换掉

    s.replace(/[A-Z]/g,‘_$&‘);   //_Hello_JavaScript_World

      ①$&保留原来匹配对象并在前面加_

      ②&1表示匹配的第一组以此类推

  split()方法

   var csv = "one,two,three,four";

  csv.spilt(/\s*,\s*/);   //["one","two","three","four"]

     ①\s*用于匹配0个或者多个空格

4、回调式替换

  当我们需要执行一些特定的替换操作时,也可以通过返回字符串的函数来完成。

  var global;

  var callback = function () {

    global = argumens;

    return argumens[1] + ‘a‘ + argumens[2] + ‘dot‘ + arguments[3];

  }

  var re = /(.*)@(.*)\.(.*)/;

  "[email protected]".replace(re,callback);  //OkayChen at cnblogs dot com

5、正则匹配模式 

匹配模式 相关说明
[abc] 
  匹配的字符类信息

    > "Some Text".match(/[otx]/g);   //[‘o‘,‘t‘,‘x‘,‘t‘];

[a-z]
  [a-z]就相当于[abcd],[a-z]就表示我们要匹配所有的小写字母,而[a-zA-Z0-9_]就是匹配所有的

字母、数字及下划线

    > "Some Text".match(/[a-z]/g);   //[‘o‘,‘m‘,‘e‘,‘e‘,‘x‘,‘t‘];

[^abc]
  匹配所有不属于限定范围内的字符

    > "Some Text".match(/[^a-z]/g);  //[‘S‘,‘‘,‘T‘];

a|b
   这里匹配的是a或者b

    > "Some Text".match(/t|T/g);   //[‘T‘,‘t‘];

a(?=b)
   匹配所有后面跟着b的a的信息

    > "Some Text".match(/Some(?= Tex)/g);  //["some"]

    > "Some Text".match(/Some(?=Tex)/g);  //null

 a(?!b)
  匹配所有后面不跟着b的a的信息

    > "Some Text".match(/Some(?!Tex)/g);  //["some"]

     > "Some Text".match(/Some(?! Tex)/g);  //null

 \
  反斜杠主要用于帮助我们匹配一些模式文本中的特殊字符

    > "R2-D2".match(/[2\-3]/g);  //["2","-","2"]


\n

\r

\f

\t

\v


  换行符

  回车符

  换页符

  横向制表符

  纵向制表符

 \s
   这是匹配的空白符,包含上面五个转义字符  

    > "R2\n D2".match(/\s/g);  //["n",""]

\S     匹配除空白符以外的内容,就相当于  [^\s]
\w     匹配所有的字母、数字和下划线,相当于  [A-Za-z0-9_]
\W     刚好与\w相反
\d     匹配所有的数字类信息 相当于 [0-9]
 \D       刚好与\d相反
\b     匹配一个单词的边界,例如空格和标点符号
\B     刚好与\b相反
 [\b]     匹配的是退格键符(Backspace)
\0     这里匹配的是null         
 \uoooo
   这里匹配的是一个unicode字符,并且是一个四位16进制数来表示,

    > "CTOH".match(/\u0441\u0442\u943E/)  //["CTO"]    

\x00 
   这里匹配的是一个字符,该字符的编码是一个两位十六进制数来表示的

    >  "dude".match(/x64/g);  // ["d","d"] 

^    匹配字符串的开头部分,如果设置了m,那就是匹配每一行的开头 
    匹配字符串的结尾部分,如果设置了m,那就是匹配每一行的结尾 
.    这里 匹配的是除了换行符以为的任何字符
*    这里匹配的是模式中间出现0次或者多次的内容。例如/.*/可以匹配任何内容 

   匹配模式中间出现0次或者1次的内容

     >  "anything".match(/ng?/g);   //["ng","n"]

+
   这里匹配的是模式中间至少出现一次或者多次的内容

     > "R2-D2" and C-3PO".match("/[a-z+/gi");  //["R","D","and","C","po"]

{n} 
   匹配模式中出现n次的内容

     >  "regular expression".match(/\b\w{3}/g);   //["reg","exp"]

{min,max}
    匹配模式中间出现次数在min和max之间的信息 ,如果省略了max,则意味着没有最多次数

     >  "goooooooooole".match(/o{2 , }/g);  //["oo","oo","oo","oo","oo"]

(pattern)
   捕获模式

     >  "regular expression".match(/(r)/g , ‘$1$1‘ );     //rregularr exprression

     >  "regular expression".match(/(r)(e)/g , "$2$1");    //ergular expression

(?:pattern)
    这不是捕获模式,不能用$1,$2等参数来记录匹配串

     >  "regular expression".match(/(?:r)(e)/g , ‘$1$1‘ ); //eegular expeession

时间: 2024-10-20 05:05:07

正则匹配模式汇总(一)的相关文章

20170624xlVBA正则分割分类汇总

Sub RegExpSubtotal() '声明变量 Dim Regex As Object '正则对象 Dim Dic As Object '字典对象 Dim Key As String '关键字 Dim Item As Double '项内容 Dim Index As Long '序号 Dim Text As String '文本 Dim Mch As Object '匹配集合 Dim OneMch As Object '匹配子项 Dim Rng As Range '单元格对象 '实例化 正

iOS 中的正则匹配(工具类)

正则表达式 正则表达式是对字符串操作的一种逻辑公式, 用事先定义好的一些特定字符.及这些特定字符的组合, 组成一个"规则字符串", 这个"规则字符串"用来表达对字符串的一种过滤逻辑, 正则表达式就是用于描述这些规则的工具, 或者说, 正则表达式就是记录文本规则的代码. 在开发中, 我们经常会有查找符合某些复杂规则的字符串的需要, 比如数据校验: 判断用户的输入是否合法(如:用户注册的时候,QQ号码,电话号码,邮箱是否符合要求) 下面让我们先来看看正则匹配常用的一些字

day6 反射,hashlib模块,正则匹配,冒泡,选择,插入排序

一.反射(自省) 首先通过一个例子来看一下本文中可能用到的对象和相关概念. import sys # 模块,sys指向这个模块对象import inspectdef foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name='kitty'): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用类或实例.sayHi访问

pcre库编写的正则匹配程序

使用的是Philip Hazel的Perl-Compatible Regular Expression库,参考: http://see.xidian.edu.cn/cpp/html/1428.html 执行匹配的时: gcc myreg.c ip.pat 内容: ip.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ ip.txt 内容: 192.168.1.1 测试: ./a.out ip.pat ip.txt 下面是myreg.c源代码 /*  myreg.c  */ #inc

javascript的正则匹配

前段时间需要用到比较多的js代码,当时有点搞不清test和match方法的区别,向百度求助,找到了这边关于正则匹配的博文,感谢作者分享. 原文地址[http://blog.sina.com.cn/s/blog_89da3e5101013giy.html] JS的正则表达式 rge.test(str) 检验目标对象中是否包含匹配模式,并相应的返回true或false   rge.source str.search(rge) 将返回一个整数值,指明这个匹配距离字符串开始的偏移位置.如果没有找到匹配,

常用JS正则匹配函数

//校验用户名:只能输入1-30个字母 function isTrueName(s) { var patrn=/^[a-zA-Z]{1,30}$/; if (!patrn.exec(s)) return false return true } //校验密码:只能输入6-20个字母.数字.下划线 function isPasswd(s) { var patrn=/^(/w){6,20}$/; if (!patrn.exec(s)) return false return true } //校验普通

Nginx 正则匹配配置

location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进行普通字符精确匹配.也就是完全匹配. @ 它定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location优先级说明 在nginx的location和配置中location的顺序没有太大关系.正location表达式的类型有关.相同类型的表达式

高性能Web服务器Nginx的配置与部署研究(16)小议location匹配模式优先级

1 location 的匹配符 1.1 等于匹配符:= 等于匹配符就是等号,特点可以概括为两点: 精确匹配 不支持正则表达式 1.2 空匹配符 空匹配符的特点是: 匹配以指定模式开始的 URI 不支持正则表达式 1.3 正则匹配符:~ 正则匹配符是可以使用正则表达式的匹配符.不过这里要强调的是,一般来说~是指: 区分大小写的正则匹配 而~*表示: 不区分大小写的正则匹配 但是对于一些对大小写不敏感的操作系统,这两者没有区别.另外一个就是^~,其表示以指定模式开始的正则匹配. 1.4 内部访问符:

SQL模糊查询条件的四种匹配模式

执行数据库查询时,有完整查询和模糊查询之分. 一般模糊语句格式如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件 其中关于条件,SQL提供了四种匹配模式: 1.% :表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 例如 SELECT * FROM [user] WHERE u_name LIKE '%三%'将会把u_name为"张三","张猫三"."三脚猫",&qu