一年没写过文章了,一年来对前端也有了更多的了解。正则表达式,通用于很多语言,使用正则可以少走很多弯路。
1、正则实际上就是一个字符串。
es6 里面有一个拼接字符串的写法 是:`string${变量名字}`
let name = ‘ 测试 ’; hello_name = `hello ${name}`;
等同于
hello_name = ‘hello’ + name;
这个和正则的写法很类似
正则也是各种常量与变量的拼接
比如想匹配一个 ‘my age is 数字 ’ 的 字符串,那么可以写成
/my age is (\d{1, 2})/
/my age is (\d{1, 2})/.test(‘my age is 12’) // true
/my age is (\d{1, 2})/.test(‘my age are 12’) // false
这里 \d 表示 数字,{1, 2}表示前一位(也就是 \d)的个数在 1~2 之间
不过类似于 {1, 2} 这样的的位数匹配符 是默认和他的前一位捆绑的
所以()可以省略
那么就是写成
/my age is \d{1, 2}/
但是如果你只需要‘my age is 数字’这句话,不需要像 my age is 33456 hhhh,有其他多余的内容那么就需要一些限定符号
/^my age is \d{1, 2}$/
/^my age is \d{1, 2}$/.test(‘my age is 12’) // true
/^my age is \d{1, 2}$/.test(‘my age is 123’) // false
/^my age is \d{1, 2}/.test(‘my age is 123456’) // true 这个没用 $
^ 表示起始 $ 表示结尾 说明这句话是以 m 开头,以一到俩位数的年龄结尾
类似于 \d 的符号 还有 很多,常用的有 \d \s \w 等,具体的表示含义可以参考文档
2、正则括号的使用。
正则中() {} [] 都会用到,没一个的含义都不一样
()多用于 合并
正则 默认 都是 相互独立
比如 /ab{3}/
那么他只会匹配 3 次 b,但是只匹配 1 次 a
如果写成 /(ab){3}/
那么就会匹配 3 次 ‘ab’
[]多用于 筛选
比如 \d 实际上可以写成 [0123456789]
正则会从 [] 的集合中去匹配,只要符合其中的一个,就算匹配成功
/^[ab]c$/ 匹配 ac 和 bc 都会成功,但是匹配 abc 不会成功
[]中可以在最前面加一个 ^ 表示取反
比如 [^ab]表示匹配非 ab 的字符
/[^ab]/.test(‘a’) //false
/[^ab]/.test(‘x’) //true
比如 [^\d] 可以表示 匹配 非数字(当然也可以写 \D 来表示 匹配非数字)
{}多用于位数限定
{1} 表示限定 为 一个
{1, 2} 表示限定 为 1 到 2 个
这些目前就是正则的最基本用法
如果有需要帮忙指导的可以下面留言。