正则表达式

作者: 雨未浓 | 来源:发表于2018-08-16 18:49 被阅读17次

    正则表达式使用技巧

    1.定义匹配模式
    var pattern = /[0-9]+/; //这是一个数字匹配模式,需匹配的内容都放在//中
    2.使用匹配模式
    str.match(pattern); //str是需要匹配的字符串,match是匹配方法


    正则表达式语法

    普通字符

    普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。

    非打印字符

    非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:


    image.png
    特殊字符
    image.png
    限定符
    image.png
    定位符
    image.png
    注意:不能将限定符与定位符一起使用。由于在紧靠换行或者字边界的前面或后面不能有一个以上位置,因此不允许诸如 ^* 之类的表达式。
    若要匹配一行文本开始处的文本,请在正则表达式的开始使用 ^ 字符。不要将 ^ 的这种用法与中括号表达式内的用法混淆。
    若要匹配一行文本的结束处的文本,请在正则表达式的结束处使用 $ 字符。
    所谓 字边界 就是两个单词以空格为边界,\b 匹配的是一个单词的开头或结尾部分,而 \B 匹配的是单词的中间部分

    注意
    . 特殊字符在中括号表达式时 如 [.] 只会匹配 .字符,等价于 .,而非匹配除换行符 \n 外的所有字符。
    ^ 和 [^指定字符串] 之间的区别:
    ^ 指的是匹配字符串开始的位置
    [^指定字符串] 指的是除指定字符串以外的其他字符串

    元字符




    运算符优先级

    image.png

    修饰符

    image.png

    *支持正则表达式的 String 对象的方法

    image.png
    search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
    str.serch(pattern); //若找到则返回匹配到的字符串的起始位置,否则返回-1,不支持全局检索,也不支持从后往前检索
    match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
    str.match(pattern); //若找到就返回字符,否则返回null,若全局匹配,返回数组
    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
    str.replace(pattern,replacement); //用replacement替换匹配的字符,replace很强大还支持换位
    uw=name.replace(/\b\w+\b/g, function(word){
        return word.substring(0,1).toUpperCase()+word.substring(1);}
        );
    //首字母变大写
    

    RegExp 对象方法

    image.png
    compile() 方法用于在脚本执行过程中编译正则表达式。
    compile() 方法也可用于改变和重新编译正则表达式。
    RegExpObject.compile(regexp,modifier)
    image.png
    pattern.compile(pattern1) // 将匹配模式换为pattern1
    exec() 方法用于检索字符串中的正则表达式的匹配
    RegExpObject.exec(string)
    返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null
    test() 方法用于检测一个字符串是否匹配某个模式.
    RegExpObject.test(string)
    如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

    RegExp 对象属性

    image.png
    global 属性用于返回正则表达式是否具有标志 "g"
    它声明了给定的正则表达式是否执行全局匹配。
    如果 g 标志被设置,则该属性为 true,否则为 false。
    RegExpObject.global
    ignoreCase 属性规定是否设置 "i" 标志
    如果设置了 "i" 标志,则返回 true,否则返回 false
    RegExpObject.ignoreCase
    lastIndex 属性用于规定下次匹配的起始位置。
    RegExpObject.lastIndex
    重要事项:不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。
    提示:如果在成功地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0
    multiline 属性用于返回正则表达式是否具有标志 m。
    它声明了给定的正则表达式是否以多行模式执行模式匹配。
    RegExpObject.multiline
    source 属性用于返回模式匹配所用的文本。
    该文本不包括正则表达式直接量使用的定界符,也不包括标志 g、i、m。
    RegExpObject.source
    var str = "Visit W3School.com.cn";
    var patt1 = new RegExp("W3S","g");
    document.write("The regular expression is: " + patt1.source);  //w3s
    

    正则语法
    直接量语法
    /pattern/attributes //参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配
    创建 RegExp 对象的语法:
    new RegExp(pattern, attributes);

    相关文章

      网友评论

        本文标题:正则表达式

        本文链接:https://www.haomeiwen.com/subject/cdpnbftx.html