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

    一、正则表达式基础

    正则表达式(Regular Expression)是对文本或者字符的匹配和替换,匹配的是位置或者字符。

    首先正则匹配不仅仅能够实现精确匹配,还可以实现模糊匹配。可以分为两种:横向匹配和纵向匹配。

    横向匹配:就是匹配的字符的数量可以在一个范围内。可以同量词来实现。如:

    var regex = /ab{2,5}c/g;    //g代表全局匹配,表示在全局范围内可以匹配前面一个a,后面跟了最少两个最多5个b最后跟了一个c的字符串。
    var string = "abcabbcabbbcabbbbcabbbbbcabbbbbbc";
    console.log( string.match(regex) );       ////["abbc", "abbbc", "abbbbc", "abbbbbc"]

    纵向匹配:是指匹配到一位字符的时候可以匹配到多种可能,可以用字符组来实现。如:

     var regex = /a[abc]c/g;      //表示在全局范围内匹配前面一个字符是a,后面一个字符是a或者b或者c的字符,最后一个字符是c的字符串。
     var string = "abc aac acc";
     console.log( string.match(regex) );    ////["abc","aac","acc"]

    接下来来看一下正则表达式的匹配:

    1、量词,就是重复的数量。

    {m} 等价于{m,m},表示出现m次。

    {m,}表示至少出现m次。
    {m,n} 表示至少出现m次,至多出现n次。
    ? 等价于{0,1},表示出现0次或者1次。 + 等价于{1,},表示出现至少一次。 * 等价于{0,},表示出现0次或者多次。

    2、字符组,用字符的特定含义来匹配。

    d就是[0-9]。表示是一位数字。其英文是digit(数字)。
    
    D就是[^0-9]。表示除数字外的任意字符。
    
    w就是[0-9a-zA-Z_]。表示数字、大小写字母和下划线。w是word的简写,也称单词字符。
    
    W是[^0-9a-zA-Z_]。非单词字符。
    
    s是[ 	v
    
    f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。s是space character的首字母。
    
    S是[^ 	v
    
    f]。非空白符。
    
    .就是[^
    
    u2028u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外。

    3、正则表达式的修饰符

    ignoreCase:RegExp对象是否含有修饰符i,表示对大小写不敏感的匹配。
    
    global: RegExp对象是否含有修饰符g,表示进行全局的匹配。
    
    multiline: RegExp对象是否含有修饰符m,表示进行多行匹配。
    
    source: 显示正则表达式函数体。

    4、正则表达式的定位符

    ^ (脱字符):匹配输入字符串的开始位置
    
    $ :匹配输入字符串的结束位置
    
     :匹配一个单词边界
    
    B :匹配非单词边界

    (?=p):p是一个子模式,表示p前面的位置,positive lookahead 正向先行断言。

    (?!p):表示除开P前面的位置,
    negative lookahead负向先行断言。

    注意: ^ 放在字符簇中是取反的意思,放在整个表达式中是开始位置;

    二、正则表达式操作方法

    正则操作的方法,共有6个,字符串4个,正则3个:

    String#search
    
    String#split
    
    String#match
    
    String#replace
    
    RegExp#test
    
    RegExp#exec
    RegExp#compile

    正则表达式方法:

        test:用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

    var patt1=new RegExp("e");
    document.write(patt1.test("The best things in life are free"));  ////true

        exec:用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

    var patt1=new RegExp("e");
    
    document.write(patt1.exec("The best things in life are free"));    ////e

     compile:用于改变 RegExp,compile() 既可以改变检索模式,也可以添加或删除第二个参数

    var patt1=new RegExp("e");
    
    document.write(patt1.test("The best things in life are free"));   ////true
    
    patt1.compile("d");
    
    document.write(patt1.test("The best things in life are free"));  ////false

    字符串对象的方法:

        match:找到一个或多个正则表达式的匹配。返回匹配值。

    var regex = /a[abc]c/g;
    var string = "abc aac acc";
    console.log( string.match(regex) );   ////["abc","aac","acc"]

        search:用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置.

    var regex = /a[abc]c/g;
    var string = "bcaaacacc";
    console.log( string.search(regex) );     ////3

        split:拆分字符串。

    var regex = /,/g;
    var string = "html,css,javascript";
    console.log( string.split(regex) );     ////["html", "css", "javascript"]

        replace: 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    var regex = /,/g;
    var string = "html,css,javascript";
    console.log( string.replace(regex,"!") );   ////html!css!javascript
  • 相关阅读:
    微分中值定理和泰勒展开
    Burnside引理与Polya定理
    递推关系和母函数
    cogs 1361. 树 线段树
    cogs 247. 售票系统 线段树
    cogs 176. [USACO Feb07] 奶牛聚会 dijkstra
    cogs 1672. [SPOJ 375] 难存的情缘 树链剖分套线段树 易错! 全博客园最长最详细的题解
    cogs 886. [USACO 4.2] 完美的牛栏 二分图 匈牙利算法
    cogs 1254. 最难的任务 Dijkstra + 重边处理
    cogs 364. [HDU 1548] 奇怪的电梯 Dijkstra
  • 原文地址:https://www.cnblogs.com/tutuj/p/11003382.html
Copyright © 2011-2022 走看看