正则表达式
tips: 1.正则开始和结束的斜杠,叫做定界符 2.正则里面,只要不出现量词,就是匹配一个 用或的时候经常需要加括号,因为或的优先级太低了 (xxx|xxx|xx) 用test的时候经常要加首尾 ^和$*
常用方法
str.search(正则):返回正则匹配的下标
str.match(正则): 返回正则匹配的东西
str.replace(正则,要替换成什么)
re.test(str) 返回true,false
修饰符
^ : 在[]里用是排除,否则是行首
i : 忽略大小写
g : 全局匹配
$ : 行尾
转义
\d:查找数字,跟/[0-9]/ 作用一样
\w:数字字母下划线[a-z0-9_]
\s:所有的空白字符
. :可以匹配任意字符。 比如开头a,结尾z,中间5-18位随意字符。/a.{5,18}z/。
\D:排除数字[^0-9]
\W:排除数字字母下划线[^a-z0-9_]
\S:非空白字符
如果不想匹配任意字符,就想匹配 . 本身的话,需要转义一下,就是在前面加个反斜杠 \.
量词
+: 越多越好,相当于{1,}。 比如\d+ 就是匹配连着的长度不确定的数字。
{5}:几个。/\d{5}/就是连着的5个数字。
{n,m}:个数最少为n,最多为m。匹配4-10位的数字 /\d{4,10}/
{n,}: 最少为n,多了不限。/\w{5,}/ 匹配数字字母下划线,最少6个
?: 可以没有,有的话最多一个。/.jsx?/ 匹配.js和.jsx
元字符
- 任何一个
/a[abc]q/ 第一个是a,最后一个是q,中间可以是a、b、c,aaq,abq,acq。 - 范围
/[a-z]/i
/[0-9]/
/[a-z0-9]/ - 排除
/[^+]/ 不要加号
/[^a-z]/ 不要英文字母
/[^0-9]/ 不要数字
代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
441.search
//字符串里找'a'
let str = 'weqrfsadfanxk';
//字符串方法:
console.log(str.indexOf('a'));
//正则,配合search方法,效果和indexOf一样
let re = /a/;
console.log(str.search(re));
2. match
// let str='nana123nidv433odcn971832943bdcbnc283236128113';
let re=/\d+/g
console.log(str.match(re));
//[ '123', '433', '971832943', '283236128113' ]
3.replace,忽略大小写,把所有'a'替换为'-'
let str='anskcAjdoApeamettanvuAoencacAAAbeusn';
console.log(str.replace(/a/gi,'-'));
// -nskc-jdo-pe-mett-nvu-oenc-c---beusn
4. /\s/
let str='asdaoisdoisa nxncc iwq asdi nc m'
console.log(str.replace(/\s/g,''));
//asdaoisdoisanxncciwqasdincm
5.校验QQ,一共12位,第一个数字不能是0,后面的数字个数是4或者11。
let re=/[1-9]\d{4,11}/;
6. ^和$ 行首行尾
//^表示从开头起就要符合正则,不加^的话不会从行首开始验证。
//$表示行尾。^和$一起用表示从头到尾都要符合正则的要求。
let re = /^[1-9]\d{4,11}$/;
//匹配网址
let re = /^https?:\/\//
7. 0-9999
let re = /^(\d|[1-9]\d{1,3})$/