JavaScript之正则表达式

发布于:2024-07-30 ⋅ 阅读:(111) ⋅ 点赞:(0)

一、什么是正则?

字符串中字符的规则

二、正则的作用

验证

查找与替换

三、学习过程

1.如何写正则?

(1)任何一个字符串都是匹配和自己完全一样的正则

(2)匹配一堆字符中的其中一个

例:[abcde]-->匹配abcde的其中一个

注:一个中括号匹配到的是一个字符

(3)匹配给出字符以外的字符

 例:[^abcde]-->匹配abcde以外的一个字符

 (4)简写“到”:-

例:[a-z]匹配一位小写字母

同理还有大写字[A-Z],数字[0-9]

 注:使用“-”必须保证按照ASCII顺序

比如[a-z]是正确的,[z-a]就是错误的

因为ASCII表中a在z的前面

练习1:匹配一位字母(大写小写都要匹配到)

[a-Z]报错,在ASCII中Z在a的前面

[A-z]会匹配进来一些其他字符,因为表中z-A之间还存在其他字符

正确写法:

[a-zA-Z]或者[A-Za-z]

练习2:匹配一位字母(大小写)或则数字

[a-zA-Z0-9] 

(5)量词{n}个

3个小写字母[a-z]{3}

手机号:

1[3-9][0-9]{9}

量词区间

3-6位数字[0-9]{3,6}

3位以上小写字母[a-z]{3,}

注:量词区间中,前面的数字不可省略

6位以下大写字母[A-Z]{,6}是错误的

分情况看是否可以没有,进而写出区间{1,6}或者{0,6}

 特殊的:0次或1次        ?

手机号:在号码前,可能会出现+86(只会出现一次)

(\+86)?1[3-9][0-9]{9}

注:\代表转义,使用字符的另外一个含义

(\+86)是一个整体需要用小括号包裹

特殊的:至少一次        +

至少一位数字开头,后面跟三位小写字母

[0-9]+[a-z]{3}

特殊的:任意次        *

匹配单标签

<至少一位字母 任意次数的数字 /至少一次>

<[a-zA-Z]+[0-9]*/?>                                                                                                                            (6)一些常见的转义

\d        一位数字                        等同于        [0-9]

\D        一位非数字                    等同于        [^0-9]

\w        一位数字字母下划线      等同于        [_0-9a-zA-Z]

\W        一位非数字字母下划线  等同于        [^_0-9a-zA-Z]

\s        一位任意形式的空格

\S        一位非任意形式的空格

特殊字符:.        匹配任意字符                                                                                                    (7)边界符                           

^(写在[]外面)比满足正则的字符串开头

\d{3}{a-z}{2}

xxx123ab        可以匹配

^\d{3}{a-z}{2}

xxx123ab        不可匹配

$ 必须以满足正则的字符串结尾

没有边界符,在整个字符串中,只有出现满足正则的字符串就可匹配

^        满足正则字符串只要出现在整个字符串开头即可,后面的内容无所谓

$        满足正则字符串只要出现在整个字符串结尾即可,前面的内容无所谓

在做验证时,要求整个字符串必须全部满足正则,不能有多余内容,就把^和$一起使用

练习:验证手机号

 ^(\+86)?1[3-9][0-9]{9}$

2.如何使用正则

声明正则

var reg = /  正则表达式 / 修饰符

i        不区分大小写

g        全局匹配,用于查找和替换

注:1.验证时,使用^$

2.查找和替换时使用g

3.边界符与g互斥

//声明正则
var reg0 = /[a-z]{3}/
var reg1 = /^[a-z]{3}$/
var reg2 = /[a-z]{3}/i

var str0 = 'abc'
var str1 = 'abc'
var str2 = 'Abc'

console.log(reg0.test(str0))
//true 没有边界符,字符串中可以有多余的内容
console.log(reg1.test(str0))
//false 有边界符,不允许有多余内容
console.log(reg1.test(str1))
//true
console.log(reg0.test(str2))
//false 不使用修饰符i,验证时区分大小写
console.log(reg2.test(str2))
//true 使用修饰符i,验证时不区分大小写


网站公告

今日签到

点亮在社区的每一天
去签到