• 08 正则表达式


    正则表达式

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-U-Compatible" content="IE-edge">
        <meta name="viewport" content="width=device-width,initial-scale=1">
        <title>正则表达式</title>
    </head>
    <body>
        <h1>正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)</h1>
        <p>使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式</p>
        <p>语法:/正则表达式主体/修饰符(可选)</p>
        <p>实例:   var patt = /runoob/ig</p>
        <p>实例解析:/runoob/i  是一个正则表达式。</p>
        <p> runoob  是一个正则表达式主体 (用于检索)。</p>
        <p> ig  是修饰符 (i:搜索不区分大小写;g:搜索全局)。</p>
        <h1>正则表达式中的特殊字符  字符 含意</h1>
        <p> 做为转意,即通常在""后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后//,转意为匹配一个单词的边界。</p>
        <p>对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了""后,/a*/将只匹配"a*"。</p>
        <h1>正则表达式</h1>
        <p>^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"</p>
        <p>$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"</p>
        <p>* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa</p>
        <p>+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa</p>
        <p>? 匹配前面元字符0次或1次,/ba*/将匹配b,ba</p>
        <p>(x) 匹配x保存x在名为$1...$9的变量中</p>
        <p>x|y 匹配x或y</p>
        <p>{n} 精确匹配n次</p>
        <p>{n,} 匹配n次以上</p>
        <p>{n,m} 匹配n-m次</p>
        <p>[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)</p>
        <p>[^xyz] 不匹配这个集合中的任何一个字符</p>
        <p>[] 匹配一个退格符</p>
        <p> 匹配一个单词的边界</p>
        <p>B 匹配一个单词的非边界</p>
        <p>cX 这儿,X是一个控制符,/cM/匹配Ctrl-M</p>
        <p>d 匹配一个字数字符,/d/ = /[0-9]/</p>
        <p>D 匹配一个非字数字符,/D/ = /[^0-9]/</p>
        <p>
     匹配一个换行符</p>
        <p>
     匹配一个回车符</p>
        <p>s 匹配一个空白字符,包括
    ,
    ,f,	,v等</p>
        <p>S 匹配一个非空白字符,等于/[^
    f
    	v]/</p>
        <p>	 匹配一个制表符</p>
        <p>v 匹配一个重直制表符</p>
        <p>w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[w]匹配"$5.98"中的5,等于[a-zA-Z0-9]</p>
        <p>W 匹配一个不可以组成单词的字符,如[W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。</p>
        <script type="text/javascript">
            var str = 'Hello World! Nice to meet you.';
            //  字符串方法中正则表达式的应用  replace search split match
            var newStr = str.replace(/s/ig,'*');  // replace 如果不指定 g 全局,那么当替换第一个匹配到的字符串就会停止
            console.log(newStr);  //  Hello*World!*Nice*to*meet*you.
            console.log(str.search(/d/i));  //  没有找到数字 所以结果 是  -1
            console.log(str.search(/w/i));  // 返回找到的第一个古河规则字符串的 索引  这里是 0
            var arr = str.split(/s/i);  //  空字符串分割
            console.log(arr);  //  ["Hello", "World!", "Nice", "to", "meet", "you."]
            // match  在字符串内搜索指定的值,匹配成功返回匹配成功的数组,无则返回 null
            var tmpArr1 = str.match(/w/ig);
            var tmpArr2 = str.match(/d/ig);
            console.log(tmpArr1);  // ["H", "e", "l", "l", "o", "W", "o", "r", "l", "d", "N", "i", "c", "e", "t", "o", "m", "e", "e", "t", "y", "o", "u"]
            console.log(tmpArr2);  // null
    
            // 正则表达式对象的方法
            var patt1 = /d/ig;
            var patt2 = /w/ig;
            //  test() 检测字符串中是否包含定义字符,返回布尔
            console.log(patt1.test(str));  // false
            console.log(patt2.test(str));  // true
            //  exec() 检索字符串中指定的值,匹配成功返回数组,匹配失败返回 null
            var tmp1 = patt1.exec(str);
            var tmp2 = patt2.exec(str);
            console.log(tmp1);  // null
            console.log(tmp2);  // ["e", index: 1, input: "Hello World! Nice to meet you.", groups: undefined]
        </script>
    </body>
    </html>
  • 相关阅读:
    Java:线程的六种状态及转化
    Java:多线程概述与创建方式
    小白学Java:RandomAccessFile
    如何用IDEA开启断言
    如何通过IDEA添加serialVersionUID
    小白学Java:I/O流
    更改IDEA相对路径
    小白学Java:File类
    小白学Java:内部类
    Leetcode数组题*3
  • 原文地址:https://www.cnblogs.com/znyyy/p/11095908.html
Copyright © 2020-2023  润新知