正则表达式相关方法

我们知道字符串(String)和ReExp对象都提供了使用正则表达式的方法,分别有什么呢?一起来总结一下吧。

String支持4种使用正则表达式的方法。

  1. str.search(regexp)
    方法str.search(regexp)返回第一个匹配项的位置,如果未找到,则返回-1
 var result = 'javascript'.search(/script/)
 console.log(result)   // 4
  1. str.replace(str|regexp,str|func)
    方法str.replace(str|regexp,str|func)用以执行检索与替换操作。如果正则表达式中设置了修饰符g,那么源字符串中所有与模式匹配的子串都将替换成第二个参数指定的字符串;如果不带修饰符g,则只替换所匹配的第一个子串。
console.log('12-34-56'.replace(/-/, ':'))  // 12:34-56
console.log('12-34-56'.replace(/-/g, ':')) // 12:34:56
  1. str.split(regexp|substr,limit) 使用正则表达式(或子字符串)作为分隔符分割字符串
console.log('12-34-56'.split(/-/))  // ["12", "34", "56"]
  1. str.match(regexp) 方法在字符串str中找到匹配regexp的字符,它有3种模式:
    (1)如果 regexp 不带有 g 标记,则它以数组的形式返回第一个匹配项,其中包含分组和属性 index(匹配项的位置)、input(输入字符串,等于 str)
let str = 'I love JavaScript'
let result  = str.match(/Java(Script)/)
console.log(result)  // ["JavaScript", "Script", index: 7, input: "I love JavaScript", groups: undefined]

(2)如果 regexp 带有 g 标记,则它将所有匹配项的数组作为字符串返回,而不包含分组和其他详细信息。

let str = 'I love JavaScript'
let result  = str.match(/Java(Script)/g)
console.log(result)  // ["JavaScript"]

(3)如果没有匹配项,则无论是否带有标记 g ,都将返回 null。

let str = 'I love JavaScript'
let result  = str.match(/HTML/)
console.log(result)  // null

RegExp对象定义了两个用于执行模式匹配的方法

  1. regexp.test(str) 它的参数是一个字符串,如果包含正则表达式的一个匹配结果,则返回true
let str = 'I love JavaScript'
console.log(/love/i.test(str))  // true
  1. regexp.exec(str) 和前面介绍的String.match()方法相似,它的参数是一个字符串。根据正则表达式是否带有标志g,它的行为有所不同。
    如果没有g,那么 regexp.exec(str) 返回的第一个匹配与 str.match(regexp) 完全相同;
    如果有标记g,那么调用 regexp.exec(str) 会返回第一个匹配项,并将紧随其后的位置保存在属性 regexp.lastIndex 中。 下一次同样的调用会从位置 regexp.lastIndex 开始搜索,返回下一个匹配项,并将其后的位置保存在 regexp.lastIndex 中。这种特殊的行为使我们可以在用正则表达式匹配字符串的过程中反复调用exec()。
    var pattern = /Java/g
    var text = 'JavaScript is more fun than Java!'
    var result;
    while((result = pattern.exec(text)) != null){
        console.log("Matched'"+ result[0] + "'"+ " at position " + result.index + "; next search begins at " + pattern.lastIndex)
    }
// Matched'Java' at position 0; next search begins at 4
// Matched'Java' at position 28; next search begins at 32

猜你喜欢

转载自blog.csdn.net/zhang070514/article/details/108432374