replace使用正则
-
模式匹配
// 目标输出:zheng li const str = 'li zheng'; console.log(str.replace(/(\w+) (\w+)/, '$2 $1'));
-
第二个参数是函数
let str = 'select * from $ { aa } fldsfdsjfljsdf $ { bb }' // 目标是把上面字符串中的$ { aa }替换成没有空格的${aa} str = str.replace(/\$ {([^}]*)}/g, function () { console.log(arguments) return '${' + arguments[1].trim() + '}' })
控制台打印出来的结果说明:
- param 1: 匹配到的字符串 - param 2: 匹配的子字符串 - param 3: 匹配的子字符串 - param 4: 匹配到的字符串在字符串中的位置 - param 5: 原始字符串
如果匹配到的全字符串有多个,每个都会执行一次函数(有多少(n)个子字符串,第二个参数开始到第n个都是表示子串,第n+1为该子串所在全字符串中的索引位置,最后一个参数为整个字符串)
匹配ip地址
const regIp = /^(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$/
匹配域名
const regDomain = /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/
匹配邮箱地址
const regEmail = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,}$/