RegExp

作者: 我还是不知道取啥名儿 | 来源:发表于2018-02-09 18:01 被阅读0次

    RegExp()构造函数带有两个字符串参数,其中第二个是可选的。第一个参数包含正则表达式的主体部分,也就是正则表达式直接量中两条斜线之间的文本。第二个参数指定正则表达式的修饰符,只能传入修饰符g,i,m或者它们的组合。

    示例:

    // 全局匹配字符串中的5个数字,注意这里使用了"\\"而不是"\"

    var zipcode = new RegExp("\\d{5}", "g");

    1. RegExp的属性

    每个RegExp对象包含5个属性。

    ---source: 只读字符串。包含正则表达式的文本。

    ---global: 只读布尔值。用以说明正则表达式是否带有修饰符g.

    ---ignoreCase: 只读布尔值。用以说明正则表达式是否带有修饰符i.

    ---multiline: 只读布尔值。用以说明正则表达式是否带有修饰符m.

    ---lastIndex: 可读/写的整数。如果匹配模式带有g修饰符,这个属性会存储在整个字符串中下一次检索的开始位置。

    2. RegExp的方法

    RegExp定义了两个用于执行模式匹配操作的方法。

        2.1 exec()

    exec()方法在一个字符串中执行匹配检索。如果它没有找到任何匹配,它就返回null,但如果它找到了一个匹配,它将返回一个数组。就像match()方法为非全局检索返回的数组一样,这个数组的第一个元素包含的是与正则表达相匹配的字符串,余下的元素是与圆括号内子表达式相匹配的子串。属性index包含了发生匹配的字符位置,属性input引用的是正在检索的字符串。

    与match()方法不同,不管正则表达式是否具有全局修饰符g,exec()都会返回一样的数组。当match()的参数是一个全局正则表达式时,它返回由匹配结果组成的数组。相比之下,exec()总是返回一个匹配结果。当调用exec()的正则表达式具有修饰符g时,它将把当前正则表达式对象的lastIndex属性设置为紧挨着匹配子串的字符位置。当同一个正则表达式第二次调用exec()时,它将从lastIndex属性所指示的字符处开始检索。如果exec()没有发现任何匹配结果,它会将lastIndex重置为0.

    示例:

    var pattern = /Java/g;

    var text = "JavaScript is more fun than Java!"

    var result;

    while((result = pattern.exec(text)) != null) {

        alert("Matched ' "  + result[0] + "' " + "at position "  + result.index + "; next search begins at " + pattern.lastIndex)

    }

        2.2 test()

    test()的参数是一个字符串,用test()对某个字符串进行检测,如果包含正则表达式的一个匹配结果,则返回true.

    示例:

    var pattern = /java/i;

    pattern.test("JavaScript");  // 返回true

    当一个全局正则表达式调用test()时,它的行为和exec()相同,因为它从lastIndex指定的位置处开始检索某个字符串,如果它找到了一个匹配的结果,那么它就立即设置lastIndex为当前匹配子串结束的位置。

    相关文章

      网友评论

          本文标题:RegExp

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