个人自学前端22-JS15-正则表达式

正则表达式

什么是正则表达式?

正则表达式就是用来描述字符串格式的规则。

在表单验证中经常需要使用正则表达式。

例如,注册一个账户,需要填写邮箱地址,那你如何判断用户输入的是邮箱格式呢?

自然,用循环和判断一定可以写出完整的检测逻辑,但是真的很难很难。

如果使用正则表达式就会简单得多。

我们只需要按邮箱格式,写出邮箱格式的正则描述即可。

正则对象的创建:

1:let re = /正则表达式/;(perl风格的正则,最常用)

2:let re = new RegExp(); (构造方法,工作中不用)

一 正则的书写

正则书写最主要的两个部分:范围和数量.

范围指的是:都是些什么字符.

数量指的是:有多少个.

因此正则描述的总是:什么什么字符有多少个这样的事情。

1.1 范围

指定的字符和指定范围的字符。

指定的字符就直接写出对应的字符即可。

指定的范围字符需要写[].

// 这个正则表示的是:一个a字符.
let re = /a/;
// 这个正则表示的是:在一起的ab字符.
let re = /ab/;
// 这个正则表示的是:一个a或者一个b字符.
let re = /[ab]/;
let re = /[a|b]/;
// 这个正则表示的是:一个a-z之间的字符.
let re = /[a-z]/
// 这个正则表示的是:数字19.
let re = /19/;
// 这个正则表示的是:1或者9.
let re = /[19]/;
// 这个正则表示的是:0-9.
let re = /0-9/;
// 小写的a-z或者大写的A-Z
let re = /[a-zA-Z]/;
let re = /[a-z|A-Z]/;
// 除了小写a-z
let re = /[^a-z]/;

1.2 数量

数量都需要写在{}中,需要些在范围后面.

如果数量是不确定的,需要用,(逗号)隔开.

// 一个a
let re = /a{1}/;
// 一个a或者b
let re = /[ab]{1}/;
// 两个a
let re = /a{2}/;
// 1到3个a
let re = /a{1,3}/;
// 0到1个a (a可有可无)
let re = /a{0,1}/;
// 最少1个a,最多不限
let re = /a{1,}/;
// 最少0个a,最多不限.(可以没有,有又可以有很多个)
let re = /a{0,}/;

1.3 简写

正则之所以难,就是采用了大量的简写.

范围的简写:

[0-9] 可以简写为 \d (数字)

[a-zA-Z0-9_]可以简写为 \w (英文数字和下划线)

\s => 表示空格

. => 表示任意字符. (注意, 反斜杠.表示点)

\D => 表示非数字

\W => 非英文数字和下划线

\S => 非空格

数量的简写

{1} 可以省略

{1,} 简写为 +

{0,1} 简写为 ?

{0,} 简写为 *

1.4 修饰符

正则有两个常用修饰符,i和g

i => 区分大小写

g => 全局匹配

// 以下表示全局比配,不区分大小写的a-z英文字母.
let re = /[a-z]/ig;

1.5 位置的正则

有时候相同的字符,出现在不同的位置,为了区分它们,需要描述它们各自的位置.(难)

1.5.1 行首:^

1.5.2 行尾:$

// 行首的a
let re = /^a/;
// 行尾的a
let re = /a$/;
// 行首是a行尾是b的ab.
let re = /^ab$/;

1.5.3 预查:

正向肯定预查: ?= (后面是)

正向否定预查: ?! (后面不是)

反向肯定预查: ?<= (前面是)

反向否定预查: ?<! (前面不是)

注意,预查写法都应该些在 ()内

// 这个字符有两个a.可以通过行首行尾的a来区分它们.还可以通过预查来区分.
let str = 'aba';
// 后面是b的a
let re = /a(?=b)/;
// 后面不是b的a
let re = /a(?!b)/;
// 前面是b的a
let re = /(?<=b)a/;
// 前面不是b的a
let re = /(?<!b)a/

1.5.4 单词边界

js正则中的单词就是 \w,非单词就是 \W

\b => 单词边界,意即单词和非单词之间的位置。也包括单词和行首行尾之间的位置。

\B => 非单词边界,意即单词和单词之间的位置。

let re = /\B/g;
'abc'.replace(re,'*'); // "a*b*c"
let re = /\b/g;
'ab$c'.replace(re,'*'); // "*ab*$*c*"
上一篇:简单的练习--结构体


下一篇:计算几何