zoukankan      html  css  js  c++  java
  • 正则基础整理

    正则表达式有两种创建方式

    • 字面量法

    var reg =/jack/;

    • 构造函数法

    var reg = new RegExp("jack","options" ); //需要两个字符串参数,正则的字符串表现,一个可选的标志字符窜(i/g/m);

    实例方法

    1. exec(),接受一个需要应用正则的字符串,若返回包含第一个匹配项信息的数组,如无匹配则返回null
      返回的数组包含两个额外属性
    • input 应用正则的字符串(即传入的字符串)
    • index 匹配项在字符串中的位置

    var text ="jack yin and haha"
    var reg =/jack yin (and (haha)?)?/g
    reg.exec(text) //["jack yin and haha", "and haha", "haha"]

    首先匹配整个字符串得到数组第一项,然后是第一个捕获组(and haha)?,最后是(haha)?,若没有捕获组则返回数组只包含一项。(捕获组就是在括号里面的匹配项)

    (x)----->匹配‘x’并且记住匹配项。这个被叫做捕获括号。

    在exec中如果不使用g(全局匹配),每次调用exec()都返回第一个匹配项,使用全局搜索,每次返回一个匹配项,每次调用exec()会继续查找新匹配项。

    2.test()接受一个字符串参数,若模式匹配则返回true,不匹配返回false
    常用于if判断中

    特殊字符

    / 转义
    ^ 匹配开始
    $ 匹配结束
    * 匹配前一项任意次
    + 一次或多次 和{1,}效果相同
    ? 0或1次 如果?跟在(*、+)量词后面则会使量词变成非贪婪模式,默认是贪婪模式(匹配最多的次数)使用/d+/非全局匹配“123abc"将返回”123“,如果使用/d+?/就会只匹配到1
    . 匹配除换行符( )之外任意单个字符
    (x) 捕获括号 匹配到的子串可以通过结果数组[0],[1],[2]...取得
    x(?=y)正向肯定查找 /jack(?=haha)/只会匹配后面跟着haha的jack
    x(?!y)正向否定查找 /jack(?!haha)/只会匹配后面没有跟haha的jack
    x|y x或y
    {n} 匹配前一字符出现了n次(n为正整数)
    {n,m} 匹配前面字符至少出现n次,最多m次
    [a-z.] 字符集合,匹配括号中的任意字符
    [^a-z] 反向字符集 ,匹配没有包含在放括号中的字符
    []匹配一个退格
     匹配一个词的边界/m/匹配moon-->m
    B 匹配一个非单词边界(他匹配一个前后字符都是相同类型的位置:都是单词或者都不是单词。一个字符串的开始和结尾都被认为是非单词。) /Bm./匹配momn --->mn
    cX 当x是一个处于a-z之间的字符的时候,匹配字符串中一个控制符(未校验)
    d 匹配一个数字 等价于[0-9]
    D 匹配一个非数字字符等价于[^0-9]
    f 换页符
    换行符
    回车符
    s 匹配空白字符(包括空格、换行、换页、制表)
    S 匹配非空字符

    var reg =/Sw/; var str ="foo bar"; reg.exec(str)
    ["foo"]
    var reg =/sw
    /; var str ="foo bar"; reg.exec(str)
    [" bar"]

    w 匹配一个单一字符(字母、数字、下划线)等价于[a-zA-Z0-9_]
    W匹配一个非单字字符

    var reg=/W/; var str ="50%"; reg.exec(str)
    ["%"]

    下一节补充正则在string的match/replace/search/split中的应用

  • 相关阅读:
    innodb中的锁
    41. First Missing Positive
    268. Missing Number
    154. Find Minimum in Rotated Sorted Array II(循环数组查找)
    局部最小值(二分)
    92. Reverse Linked List II 翻转链表II
    leetcode Reverse Nodes in k-Group翻转链表K个一组
    Mysql分区、分表、分库
    字符串循环移位(2次翻转的思路)
    android源码中,在系统多媒体数据库中增加一个字段
  • 原文地址:https://www.cnblogs.com/V-JACK/p/5312160.html
Copyright © 2011-2022 走看看