本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!html
参考地址:www.runoob.com/regexp/rege…前端
为啥写的缘由是,作前端好久了,可是正则的书写仍是百度,因此就在这里把用获得的所有写上,下次有须要,直接看本身写的。正则表达式
校验规则使用了^ [] \d {} $,分别表明着mongodb
假设你没有写最后$,即便超出位数,依然为trueexpress
let phone = /^1[3-9]\d{3,9}$/
console.log(phone.test(手机号))
// true
复制代码
let email = /^[a-zA-Z0-9]+\w+@([a-zA-Z0-9]+\.+[a-zA-Z0-9])/
console.log(email.test(邮箱号))
复制代码
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。后端
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。markdown
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),能够用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。oop
let string = 'abc1efg'
console.log(string.replace(/[0-9]/g, 'M'))
// abcMefg
复制代码
let string = 'abc1efg'
console.log(string.replace(/[^0-9]/g, 'M'))
// MMM1MMM
复制代码
表示一个区间,匹配全部大写字母,[a-z] 表示全部小写字母。布局
let string = 'ABCedf1'
console.log(string.replace(/[A-Z]|[a-z]/g, '0'))
// 0000001
复制代码
\s 是匹配全部空白符,包括换行,\S 非空白符,不包括换行。post
let string = `a b c d e f 1 *`
console.log(string.replace(/[\s\S]/g, '0'))
// 000000000000000
复制代码
等价于 [A-Za-z0-9_]
let string = `a b c d _ e f 1 *`
console.log(string.replace(/[\s\S]/g, '1'))
// 11111111111111111
复制代码
非打印字符也能够是正则表达式的组成部分。
匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。不然,将 c 视为一个原义的 'c' 字符。
匹配一个换页符。等价于 \x0c 和 \cL。
匹配一个换行符。等价于 \x0a 和 \cJ。
匹配一个回车符。等价于 \x0d 和 \cM。
匹配一个制表符。等价于 \x09 和 \cI。
匹配一个垂直制表符。等价于 \x0b 和 \cK。
let string = 'a b c a'
console.log(string.replace(/a$/g, '2'))
// a b c 2
复制代码
标记一个子表达式的开始和结束位置。子表达式能够获取供之后使用。要匹配这些字符,请使用 ( 和 )。
let string = 'abc'
console.log(string.replace(/ab*/gim, '3'))
// 3c
复制代码
匹配前面的子表达式一次或屡次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
匹配除换行符 \n 以外的任何单字符。要匹配 . ,请使用 \ . 。
要匹配 [,请使用 \ [。
例如,"do(es)?" 能够匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等价于 {0,1}
例如, 'n' 匹配字符 'n'。'\ n' 匹配换行符。序列 '\ \ ' 匹配 "\ ",而 '\ (' 则匹配 "("。
匹配输入字符串的开始位置, 除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合
要匹配 {,请使用 {。
要匹配 |,请使用 |。
n 是一个非负整数。匹配肯定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',可是能匹配 "food" 中的两个 o。
至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的全部 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
let string = 'abcab ab'
console.log(string.replace(/\bab/g, '34'))
// 34cab 34
复制代码
let string = 'abcab ab'
console.log(string.replace(/\Bab/g, '34'))
// abc34 ab
复制代码
将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。
查找全部的匹配项。
使边界字符 ^ 和 $ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。
默认状况下的圆点 . 是 匹配除换行符 \n 以外的任何字符,加上 s 修饰符以后, . 中包含换行符 \n。
元字符的元素与语法中的多数类似,所以只写那些不一样的。
例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 复制代码
等价于 [0-9]
等价于 [^0-9]。
十六进制转义值必须为肯定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可使用 ASCII 编码。
对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
若是 \nm 以前至少有 nm 个得到子表达式,则 nm 为向后引用。若是 \nm 以前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。若是前面的条件都不知足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
例如, \u00A9 匹配版权符号 (?)
字符具备高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号建立子表达式,从而产生"(m|f)ood"。
let string = 'abc'
console.log(string.replace(/a(?=b)/g, '5'))
// 5bc
复制代码
let string = 'abac'
console.log(string.replace(/(?<=b)a/g, '5'))
// ab5c
复制代码
let string = 'abac'
console.log(string.replace(/a(?!b)/g, '5'))
// ab5c
复制代码
let string = 'abac'
console.log(string.replace(/(?<!b)a/g, '5'))
// 5bac
复制代码
正则表达通常是平时不咋注意,用的时候特别头疼,这是个人感受。 因此照着文档,写了一遍,有的本身也实验了一遍,有不对的地方,还请多多指导,欢迎点赞,留言!!!