一分耕耘一分收获
前言
正则是一种神奇的魔法!
正则
此模块会将js开发
当中常用的正则表达式列举出来
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等 ——
菜鸟教程
判断字符串是否为空或者全为空格
let pattern = /^[\s]*$/ // 匹配0个或多个空格,匹配成功返回true
let str = ""
console.log(pattern.test(str)) // true
let str2 = " "
console.log(pattern.test(str2)) // true
let str3 = " test "
console.log(pattern.test(str3)) // false
小知识
需求跟业务逻辑是分开的。此表达式匹配0或多个空格
,是纯技术角度分析。对于面试的场景模拟,最好是使用此方法(纯技术角度分析)进行解答。
百位符、千位符、万位符
大数据时代为了更加美观的展示数据,会采用分位符
进行美化
// 百位符
function pattern(string) {
// 全局匹配以2的倍数结尾的前一个数字,改成 该数字+,
// $1匹配(\d)
return string.replace(/(\d)(?=(\d{2})+$)/g, "$1,")
}
console.log(pattern('100000')) // 10,00,00
// 千位符
function pattern1(string) {
// 全局匹配以3的倍数结尾的前一个数字,改成 该数字+,
return string.replace(/(\d)(?=(\d{3})+$)/g, "$1,")
}
console.log(pattern1('100000')) // 100,000
// 万位符
function pattern2(string) {
// 全局匹配以4的倍数结尾的前一个数字,改成 该数字+,
return string.replace(/(\d)(?=(\d{4})+$)/g, "$1,")
}
去除字符串里所有空格
这是最简单的一个正则O(∩_∩)O
let str = " 2 22 2"
str = str.replace(/\s*/g,"") // 匹配0或多个空格,替换成空
console.log(str)
去除首尾空格
这其实可以通过 String.prototype.trim 来实现。但是遇到不兼容情况需要自己手写表达式。
let str = " 1 11 1 "
str = str.replace(/^\s+|\s+$/g,"") //匹配开头和结尾1个以上的空格,替换成空
console.log(str) //1 11 1
密码正则
密码表达式分很多情况。常见的有如下
由数字
和字母
组成,并且要同时含有数字
和字母
,且长度要在8-16位
之间。
// 匹配由字母和数字组成的至少8位至多16位的字符串
// 同时不能全是数字或字母
let pattern = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/
console.log(pattern.test("djspadjsaopd231")) // true
密码包含 数字
,英文
,字符
中的两种以上,且长度要在8-16位
之间
//匹配一段8-16位的字符,但是不能纯由字符、大写字母、小写字母、数字匹配
let pattern = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{8,16}$/
console.log(pattern.test("1222222D222d")) // true
尾声
本文到这里就结束了,以后有新的发现还会补充。谢谢大家的用心观看,O(∩_∩)O。