关于javascript:JS正则表达式笔记

31次阅读

共计 2025 个字符,预计需要花费 6 分钟才能阅读完成。

依据 B 站小野森森老师的正则表达式的课程整顿的笔记
课程链接

本义

本义符号和转义字符

非凡转义字符

n 换行

r 回车

t 制表符 -> tab 键 4 个空格

字符串换行

办法三: 能够用反引号 \` 定义多行字符串

正则表达式

RegExp = regular expression

初体验

实例化形式

对象间接量

如果要应用变量, 则必须是用实例化形式

留神

修饰符 gim

表达式[]

[]

间断三位每一位字符是什么

区间写法

^ 符号

| 或

元字符

元字符是正则应用的转义字符

w W

d D

s S

匹配一个空白字符

b B

.

能够匹配除了回车 r 和换行 n 的所有字符

量词

正则匹配的准则:

字符串从左到右, 顺次先匹配多, 再匹配少, 如果一旦匹配上就不回头匹配.

贪心匹配准则: 能匹配上多个, 绝不匹配少个

n+

{1, 正无穷}

n*

{0, 正无穷}

* 号就是匹配 n 这个范畴内的任意字符所呈现的 0 次或屡次的字符串,

先匹配屡次的, 匹配完屡次的之后, 空字符算是 0 次, 所以也能够.

n?

{0, 1}

n{x,y}

正则表达式中不要乱写空格

y 不写 默认{1, 正无穷} === n+

x=0,y 不写 默认{0, 正无穷} === n*

^n

匹配任何以 n 结尾的字符串, 这个例子的后果错了, 应该是[‘ab’, ‘ab’]

n$

匹配任何以 n 结尾的字符串,

问题

查看字符串是否以 abcd 结尾和以 abcd 结尾

查看字符串是否以 abcd 结尾或以 abcd 结尾

查看字符串是否以 abcd 结尾和以 abcd 结尾 并且两头是数字

reg=/^abcd[d]+abcd$/ 也能够

匹配以 138 结尾的 11 位手机号码

a(?=n)

匹配前面紧接着指定字符串 n 的字符串 a, 叫 正向预查

a(?!n)

匹配前面紧接着的不是指定字符串 n 的字符串 a, 也叫 正向预查

xxxx xxyy

子表达式

(a) 括号里面包着的是子表达式

子表达式有记忆性能, 前面紧挨着的反向援用都会认为是匹配同一个字符

反向援用

1 指的是你反向援用第 1 个子表达式

n 指的是你反向援用第 n 个子表达式

xxyy

(?:n)

str.match 会把子表达式也捕捉进去

捕捉分组

a , b, c 三个子表达式都捕捉

不捕捉分组

(?:a) 不让捕捉这个子表达式

正则对象属性

正则对象办法

reg.test(str)

reg.exec()

这个办法是机械式的循环

个性

须要晓得的景象

输入的数组中的 index 属性和 reg.lastIndex 属性的值保持一致, 并且能够通过扭转 reg.lastIndex 的值来扭转 index 的值, 即批改匹配的地位

然而如果把 lastIndex 的值批改为不是 3 的倍数, 下一个 index 会变成大于 lastIndex 值的最小的 3 的倍数:

此时, 在执行一次 reg.exec(str), lastIndex 会主动跟 index 同步变为 9

str.match(reg)

手机号校验

出生日期校验

match 与 exec 的区别

str.split(reg)

字符串宰割

String 结构的对象的办法

str.toUpperCase()

str.toLowerCase()

str.toLocaleUpperCase()

str.toLocaleLowerCase()

针对一些比拟非凡的语言, 比方土耳其语等语言中有非凡的大小写字母, 这些语言的大小写转化要应用 locale

针对英文字母, 加 locale 与否都能实现大小写转换性能

str.charAt()

str.charCodeAt()

str.fromCharCode()

str.substr()

前闭合 后长度

str.substring()

前闭后开

valueOf 和 toString 的比拟

1、toString 字符串 valueOf 返回本来的值

2、Date:toString 示意工夫的特有的字符串 value0f 13 位毫秒工夫戳

3、数组:toString 数组元素用, 宰割的字符串 value0f 数组本来的值

4、对象:toString 对象的类型字符串示意‘[object Object] ‘ value0f 对象本来的值

5、toString function 通过 [native code] 辨别 JS 内置函数和自定义函数

6、toString 接管一个参数 - 基数 radix value0f 没有参数

封装工具类函数

第一种

第二种

贪心模式和非贪心模式

默认是贪心模式, 加一个? 变成非贪心模式

例子 1

例子 2

replace

他自身不具备全局匹配的能力

第一个参数: 要替换的字符串

第二个参数: 替换成的字符串

xxyy -> yyxx

办法一:

办法二:

js-plus-plus -> jsPlusPlus

肯定要打括号才是子表达式

jsPlusPlus -> js\_plus\_plus

aabbcc -> a$b$c$

如果要用 $ 符号, 应该写两个: $$

下面可看成 $1 $$ $2 $$ $3 $$

呈现 0 次或屡次

1000000000000 -> 1000,000,000,000

提醒: 把空换成逗号

匹配前面跟着的是 1 或多个 000 连着的 并且字符串是以他们结尾的 空, 把这个空变成逗号

模板替换

双大括号替换

肯定要记得写子表达式

模板替换(重要)

输入框不让输出 空格

至多 6 位

验证邮箱

留神点

语法当中存在的符号肯定要对它进行本义, 不然会报语法错误

正文完
 0