match
- 定义: match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
- 语法: string.match(regexp)
- 注意: match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。
- 代码题1
function findShowMostLetter(str = ''){
let arr = str.match(/(\w)\1+/g)
if(!arr){
return {}
}
let res = {}
let max = 1
arr.forEach((item)=>{
key = item[0]
length = item.length
if(length===max){
res[key] =length
}else if(length>max){
res = {}
res[key] = length
max = length
}
})
return res
}
function getUrlParamObj(str){
const pattern = /([^?&=]+)=[^&=]*/gi
const res = str.match(pattern)
let output = {}
if(!res ||res.length === 0){
return output
}
for(let i = 0; i<res.length; i++){
let [key,value] = res[i].split('=')
output[key] = value
}
return output
}
replace
- 定义: replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
- 语法: string.replace(searchvalue,newvalue)
- 入参: 该方法接受两个参数: 第一个参数可以是字符串,也可以是一个regExp对象,第二个参数可以是字符串也可以是一个函数,如果第一个函数是字符串,只会替换第一个子字符串
- 第二个参数是字符串时,有以下几个特殊字符
- 直接量符号(就是当做′'字符用)
- $& 与正则相匹配的字符串
- $` 匹配字符串左边的字符
- $’ 匹配字符串右边的字符
- 1,2,,3,…,n 匹配结果中对应的分组匹配结果
- 第二个参数是函数时,且只有一个匹配项时,接受三个参数match(匹配项),pos(匹配项在字符串中的位置),originalText(原始字符串)
- 当正则表达式中定义了多个捕获组时,传递给函数的参数依次是模式的匹配项,第一个捕获组的匹配项,第二个捕获组的匹配项...,最后两个参数仍然是模式的匹配项在字符串中的位置和原始字符串
- 代码题1
function numberFormat(number){
if(toLocaleString){
return number.toLocaleString()
}else{
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g,',')
}
}
function toCamelCase(obj){
if(obj == null){
return obj
}
let keys = Object.keys(obj)
let res = {}
for(let i=0; i<keys.length; i++){
const newKey = keys[i].replace(/_(\w)/g,(match,$1)=>{
return $1.toUpperCase()
})
if(typeof obj[keys[i]] === 'object'){
console.log('==')
res[newKey] = toCamelCase(obj[keys[i]])
}else{
res[newKey] = obj[keys[i]]
}
}
return res
}
function trim(str){
return str..replace(/^\s*|\s*$/g,'')
}
function trim2(str){
return str.replace(/^\s*(\w*)\s*$/g,'$1')
}
console.log(trim(' fff '))
console.log(trim2(' fff '))
function revertTel(num){
return num.toString().replace(/(?<=\d{3})(\d{4})(?=\d{4})/g, function(str,$1){
console.log(str,$1)
return '****'
})
}
test()
- 定义:test()方法搜索字符串指定的值,根据结果并返回真或假。
- 代码题
const patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
exec()
- 定义: exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
- 代码题
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free"));