关于正则表达式:前端中正则表达式的相关方法

13次阅读

共计 1678 个字符,预计需要花费 5 分钟才能阅读完成。

str.match(regexp)

办法 str.search(regexp) 返回第一个匹配项的地位,如果未找到,则返回 -1

 var result = 'javascript'.search(/script/)
 console.log(result)   // 4

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

str.split(regexp|substr,limit)

应用正则表达式(或子字符串)作为分隔符宰割字符串

console.log('12-34-56'.split(/-/))  // ["12", "34", "56"]

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。

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

regexp.test(str)

它的参数是一个字符串,如果蕴含正则表达式的一个匹配后果,则返回 true

let str = 'I love JavaScript'
console.log(/love/i.test(str))  // true

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
正文完
 0