zoukankan      html  css  js  c++  java
  • 正则表达式

    了解正则表达式语法

    什么是正则表达式

    .regular expression 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

    说简单了就是按照某种规则去匹配符合条件的字符串

    Regexper

    正则表达式工具:http://regexper.com

    js在线调试

    http://jsrun.net/new

    https://jsbin.com/

    https://jsfiddle.net/

    \bis\b     \b单词边界  .点表示任意字符 *表示任意个

    \d表示数字

    []表示或 例:[/-]

    ^表示开头[取反]

    $表示结束

    .*表示任意个字符,可以是0

    .+表示任意个字符,至少1

    ()表示分组

    REGEXP对象

    javascript通过内置对象RegExp支持正则表达式

    有两种方法实例化RexExp对象

    .字面量

    .构造函数

    字面量

    Var reg=/ \bis\b /g  gglobal,全部

    Str.replace(reg,IS); 如何没有g只会替换一个

    Var reg=new RegExp(\\bis\\b’ , g);

    构造函数接收两个参数,都是字符串。\是特殊字符需要转义\\,第二字符串是标识

    var reg=/\bis\b/g;

    var reg2=new RegExp('\\bis\\b','g');

    var res="He is a boy. This is a dog. where is she?".replace(reg,'IS')

    var res2="He is a boy. This is a dog. where is she?".replace(reg2,'IS')

    console.log(res2);

    修饰符:

    g:global全文搜索,不添加,搜索到第一个匹配停止

    i:ignore case 忽略大小写,默认大小写敏感的

    m:multiple lines多行搜索

    元字符

    正则表达式由两种基本字符组成:

    -原义文本字符(代表它本来含义)

    -元字符(特殊含义的字符)

    *+?$^.|\(){}[]

    \t 水平制表符 -表示空四个字符,也称缩进,相当于按一下Tab键

    \v 垂直制表符

    \n 换行符  newline

    \r 回车符  return

    \0 空字符

    \f 换页符

    \cX X对应的控制字符(Ctrl+X)

    字符类

    一般情况下正则表达式一个字符对应字符串一个字符

    表达式ab\t的含义

    需要符合一类的

    我们可以使用元字符[]来构建一个简单的类

    所谓类是指符合某些特性的对象,一个泛指,而不是特指某个字符

    表达式[abc]把字符abc归为一类,表达式可以匹配这类的字符

    字符类取反

    使用元字符^创建反向类/负向类

    反向类的意思是不属于某类的内容

    表达式[^abc]不是字符abc的内容

    范围类

    使用字符类匹配数字[0123456789]

    正则表达式提供的范围类

    我们可以使用[a-z]来链接两个字符表示从az的任意字符

    这是一个闭区间,包含az

    [a-zA-Z]//连写

    [0-9-]//表示匹配09加上-横线

    预定义类

     

    边界

    量词

     

    ?出现零次或一次(最多一次)

    +出现一次或多次(至少出现一次)

    *出现零次或多次(任意次)

    {n}出现n

    {n,m}出现nm

    {n,}至少出现n

    \d{10}

    贪婪模式

    1234567

    \d{3,6}

    非贪婪模式

    \d{3,6}?  //量词后添加?

    分组

    /boy{3}/

     

    /(boy){3}/

     

    "a1b2c3d4".replace(/[a-z]\d{3}/g,"x")

    "a1b2c3d4".replace(/([a-z]\d){3}/g,"x")

    使用|可以达到效果

    Byron|Casper

    Byr(on|Ca)sper

    反向应用

    2015-12-15 => 12/15/2015

    "2015-05-12".replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1');

    $n进行分组捕获

    不希望捕获某些分组,只需要在分组内加上?:就可以

    (?:Byron).(ok)

     

    前瞻

    正则表达式从文本头部向尾部开始解析,文本尾部方向,称为

    前瞻就是正则表达式匹配到规则的时候,向前检查是否符合断言

    后瞻/后顾方向相反

    [断言就是前瞻语法的一部分]

    例如:一群人中匹配到张三,我们还要看看他的父亲是不是张二。(前瞻)

         我们要看看他的儿子是不是张四(后顾)

    javascript不支持后顾

    符合和不符合某个断言称为肯定/正向匹配和否定/负向匹配

     

    对象属性

    global全文搜索,不添加,搜索到第一个匹配停止 默认false

    ignore case 忽略大小写,默认大小写敏感的 默认false

    multiple lines多行搜索 默认false

    lastIndex:当前表达式匹配内容的最后一个字符的下一个位置

    Source 正则表达式的文本字符串

    方法

    Regexp.prototype.test(str);

    Regexp.prototype.exec(str);

    使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果

    如果没有匹配到文本则返回null,否则返回一个结果数组

    调用非全局的RegExp对象的exec()时,返回数组

    第一个元素是与正则表达式相匹配的文本

    第二个元素是与RegExpObject的第一个表达式相匹配的文本(如果有的话)-子表达式[分组]

    第三个元素是与RegExpObject第二个表达式相匹配的文本(如果有的话),以此类推

     

     

  • 相关阅读:
    EXCEL中用VLOOKUP功能,根据A列的值,把B列也填充上对应的值
    ReNamer批量重命名文件,如何给杂乱无章的文件名重新命名
    小米手机亲情守护(风筝守护)怎么解绑?
    PHP正则表达式遇到的一个utf8乱码坑
    筹米网你用过没?是套路还是真能帮你提前抢购域名?
    CSS选取第一个、最后一个、偶数、奇数、第n个标签元素
    winscp会话超时及尝试关闭优化连接缓冲大小
    Linux下压缩和解压
    一步一步学Linux下vi/vim的使用(案例比纯理论好学)
    Linux使用find命令,搜索文件名中带有通配符*,报错: paths must precede expression
  • 原文地址:https://www.cnblogs.com/xqschool/p/15516220.html
Copyright © 2011-2022 走看看