1, 千分分割
// 千分分割
// 先进行最后一个三位数的分割
var string = '12345678'
var newArr = string.replace(/(?=\d{3}$)/g, ',')
console.log(newArr); // 12345,678
// 在每三位分割
var str = string.replace(/(?=(\d{3})+$)/g, ',')
console.log(str); // 12,345,678
// 匹配非开头的情况
var arr = '123456789'
var newStr = arr.replace(/(?!^)(?=(\d{3})+$)/g, ',')
console.log(newStr); // 123,456,789
// 匹配非数字开头非数字结尾
var num = '12345678 123456789'
var newNum = num.replace(/(?!\b)(?=(\d{3})+\b)/g, ',')
console.log(newNum); // 12,345,678 123,456,789
2, 匹配年-月-日
var arr = '2022-12-28'
var newArr = arr.replace(/(\d{4})-(\d{2})-(\d{2})/g, "$3/$2/$1")
console.log(newArr);
3, 多模式匹配
其中 / 和 . 需要转义。虽然匹配了要求的情况,但也匹配 “2016-06/12” 这样的数据。
假设我们想要求分割符前后一致怎么办?此时需要使用反向引用:
注意里面的 \1,表示的引用之前的那个分组 (-|/|.)。不管它匹配到什么(比如 -),\1 都匹配那个同
样的具体某个字符。
我们知道了 \1 的含义后,那么 \2 和 \3 的概念也就理解了,即分别指代第二个和第三个分组。
4, 正则匹配手机号中间4位加*号
5,匹配位置加-
6, 去掉字符串前后空格(函数trim用法)
var arr = ' footer '
var str = arr.replace(/^\s+|\s+$/g, '')
console.log(arr); // footer
console.log(str); // footer
7, 匹配html标签(成对标签)
// 匹配一个开标签,可以使用正则 <[^>]+>,
// 匹配一个闭标签,可以使用 <\/[^>]+>,
// var regex = /<([^>]+)>[\d\D]*<(\/[^>]+)>/
var regex = /<([^>]+)>[\d\D]*<\/\1>/
var str1 = '<title>regular expression</title>'
var str2 = '<p>laoyao bye bye</p>'
var str3 = "<title>wrong!</p>";
var Arr = console.log(regex.test(str1)); // true
var Arr = console.log(regex.test(str3)); // false