zoukankan      html  css  js  c++  java
  • 正则表达式中的方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>正则表达式</title>
    </head>
    <body>
    <h1>正则表达式的重复字符语法</h1>
    <pre>
    字符 含义
    {n,m} 匹配前一项至少n次,但不能超过m次
    {n,} 匹配前一项n次或者更多次
    {n} 匹配前一项n次
    ? 匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1}
    + 匹配前一项1次或者多次,等价于{1,}
    * 匹配前一项0次或者多次,等价于{0,}
    ^ 匹配字符串的开头,在多行检索中,匹配一行的开头。
    $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾。
    . 除换行符和 其他Unicode行终止符之外的任意字符。

    字符 匹配
    [...] 方括号内的任意字符
    [^...] 不在方括号内的任意字符
    w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
    W 任何不是ASCII字符组成的单词,等价于[^a-zA-Z0-9]
    s 任何Unicode空白符
    S 任何非Unicode空白符的字符,注意w和S不同
    d 等价于[0-9]
    D 等价于[^0-9]
    </pre>
    <h1>正则表达式的修饰符</h1>
    <pre>
    字符 含义
    i 执行不区分大小写的匹配
    g 执行一个全局匹配,简言之,即找到所有的匹配,而不是在找到第一个后就停止
    m 多行匹配模式,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束
    </pre>
    <p>string支持4种使用正则表达式的方法</p>

    <p>1.search()参数不是正则表达式,则会先通过RegExp构造函数将它转换成正则表达式,search()方法不支持全局检索,因为它忽略正则表达式中的修饰符g。</br>
    console.log('JavaScript'.search(/script/i));//4</br></p>
    <p>2.replace()方法以执行检索与替换操作。其中第一个参数是一个正则表达式,第二个参数时要进行替换的字符串。如果第一个参数不是正则表达式而是字符串,则replace()将直接搜索这个字符串,而不是像search()一样首先通过RegExp构造函数将它转换成正则表达式。最值得注意的是,replace()方法的第二个参数可以使函数,该函数能够动态的计算替换字符串。</p>
    <p>3.match()方法是最常用的string正则表达式方法。它的唯一参数就是一个正则表达式(或通过RegExp构造函数将它转换成正则表达式),返回的是一个由匹配结果组成的数组。如果该正则表达式设置了修饰符g,则该方法返回的数组包含字符串中的所有匹配结果。<u>如果这个正则表达式没有设置修饰符g,match()就不会进行全局搜索,它也返回一个数组。在这种情况下,数组的第一个元素就是匹配的字符串,余下的元素则是正则表达式中用圆括号括起来的子表达式。因此,如果match()返回一个数组a,那么a[0]存放的是完整的匹配,a[1]存放的则是与第一个用圆括号括起来的表达式相匹配的子串,以此类推。</u></p>
    <h1>RegExp的方法</h1>
    <p>Regexp对象定义了两个用于执行模式匹配操作的方法,参数时一个字符串,而String方法的参数是一个RegExp对象。exec()和test()</p>

    <script>
    // search()
    console.log('JavaScript'.search(/script/i));//4
    console.log('JavaScript'.search(/ggg/i));//-1
    // replace()
    var text = 'JavaScripthhjavascriptee';
    var text1=text.replace(/JavaScript/ig,'m');
    console.log(text);//JavaScripthhjavascriptee
    console.log(text1);//mhhmee
    var text2 = text.replace('javascript','mmm');
    console.log(text2);//JavaScripthhmmmee
    // match()
    console.log('1psjkhg3;sl3kd2'.match(/d/g));//["1", "3", "3", "2"]
    var url = /(w+)://([w.]+)/(S*)/;
    var text = "Visit my blog at http://www.example.com/~david";
    var result = text.match(url);
    console.log(result);//["http://www.example.com/~david", "http", "www.example.com", "~david", index: 17, input: "Visit my blog at http://www.example.com/~david"]
    if(result != null){
    var fullurl = result[0];//http://www.example.com/~david
    var protocol = result[1];//http
    var host = result[2];//www.example.com
    var path = result[3];//~david
    }
    //exec()
    var pattern = /Java/g;
    var text = "JavaScript is more fun than Java!";
    var result;

    while((result = pattern.exec(text)) != null){
    console.log(result);
    console.log("Matched '"+result[0]+"'"+"at position"+result.index+";next search begins at"+pattern.lastIndex);
    }

    //test()
    console.log(pattern.test('javascript'));//false
    console.log(pattern.test('JavaScript'));//true

    </script>
    </body>
    </html>

  • 相关阅读:
    关于JVM的一些东西
    网络的最大流最小割定理
    类的生命周期
    关于java中的不可变类(转)
    如何在Linux上升级java
    CAS操作
    如何使用fastJson来解析JSON格式数据和生成JSON格式数据
    计算机中如何实现除数是2的幂次的除法【转载自CSDN】
    python:使用Fabric自动化你的任务
    python中的元类
  • 原文地址:https://www.cnblogs.com/studyh5/p/9315906.html
Copyright © 2011-2022 走看看