正则表达式,你会了没?

867 阅读4分钟

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

表单校验跑不掉,正则表达你需要!

使用正则表达式的时候,总是忘记那些符号代表着什么!

朋友,既然进来了,那就再过一眼吧!

微信图片_20210714093533.jpg

1. 普通字符

  • /[abc]/g

[] :匹配 [...] 中的所有字符,例如 [abc] 匹配字符串 "china" 中所有的 a b c 字母。

  • /[^abc]/g

[^] :匹配除了 [...] 中字符的所有字符,例如 [^abc] 匹配字符串 "china" 中除了 a b c 字母的所有字母。

  • /[A-Z]/g

[A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。

  • /./g

. :匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]

  • /[\s\S]/g

[\s\S]:匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。

  • /\w/g

\w :匹配字母、数字、下划线。等价于 [A-Za-z0-9_]

2. 非打印字符

\n :匹配一个换行符。

\r :匹配一个回车符。

\s :匹配任何空白字符,包括空格、换页符等等。

\S :匹配任何非空白字符。

3. 特殊字符

$ :匹配输入字符串的结尾位置。

例子:/b$/g,匹配字符'abcdab',得到最后面的b

() :标记一个子表达式的开始和结束位置。

例子:/(ab)*/g,匹配字符'abcdab',得到两次ab

* : 匹配前面的子表达式零次或多次。

例子:/ab*/g,匹配字符'abcdab',得到两次ab

+ : 匹配前面的子表达式一次或多次。

例子:/ab+/g,匹配字符'abcdab',得到两次ab

. : 匹配除换行符 \n 之外的任何单字符。

例子:/./g,匹配字符'abcd',得到a、b、c、d

[ : 标记一个中括号表达式的开始。

例子:/[a]/g,匹配字符'abcd',得到a

? : 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。

例子:/ab(cd)?/g,匹配字符'abcd'、'ab',得到abcd、ab,就像模糊查询

\ : 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。

例子:/\^/g,匹配字符'ab^cd',得到^

^ :匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。

例子:/^[a]/g,匹配字符'abcd',得到a

{ : 标记限定符表达式的开始。

例子:/{a}/g,匹配字符'abcd',得到a

| : 指明两项之间的一个选择。

例子:/[a|b]/g,匹配字符'abcd',得到所有a、b

4.限定符

* : 匹配前面的子表达式零次或多次。

例子:/a*/g,匹配字符'aaaaabc',得到所有aaaaa

{n} : n 是一个非负整数。匹配确定的 n 次。

例子:/a{1}/g,匹配字符'aaaaabc',得到一个a

{n,} : n 是一个非负整数。至少匹配n 次。

例子:/a{1,}/g,匹配字符'aaaaabc',得到所有aaaaa

{n,m} : m 和 n 均为非负整数,其中n <= m,最少匹配 n 次且最多匹配 m 次。

例子:/a{1,3}/g,匹配字符'aaaaabc',得到最多3个aaa

5.定位符

\b : 匹配一个单词边界,即字与空格间的位置。

例子:/a\b/g,匹配字符'a bc',得到空格独立出来的a

\B : 非单词边界匹配。

例子:/a\B/g,匹配字符'ab c',得到连续字符中的a

常用的15个JS正则表达式

//用户名正则,4到16位(字母,数字,下划线,减号)
var str = /^[a-zA-Z0-9_-]{4,16}$/;

//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
var str = /^.*(?=.{6,})(?=.*d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;

//正整数正则
var str = /^d+$/;

//负整数正则
var str = /^-d+$/;

//整数正则
var str = /^-?d+$/;

//正数正则
var str = /^d*.?d+$/;

//负数正则
var str = /^-d*.?d+$/;

//数字正则
var str = /^-?d*.?d+$/;

//Email正则
var str = /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/;

//手机号正则
var str = /^1[34578]d{9}$/; 

//身份证号(18位)正则
var str = /^[1-9]d{5}(18|19|([23]d))d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{3}[0-9Xx]$/;

//URL正则
var str = /^((https?|ftp|file)://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$/;

//ipv4地址正则
var str = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

//RGB Hex颜色正则
var str = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;

//日期正则,简单判定,未做月份及日期的判定
var str = /^d{4}(-)d{1,2}1d{1,2}$/;

//QQ号正则,5至11位
var str = /^[1-9][0-9]{4,10}$/;

//微信号正则,6至20位,以字母开头,字母,数字,减号,下划线
var str = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;

//车牌号正则
var str = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;

//包含中文正则
var str = /[u4E00-u9FA5]/;

看完了?那你是大帅比

image.png