Skip to content

Commit 2eabe96

Browse files
朱安邦的pro电脑朱安邦的pro电脑
authored andcommitted
MODI
1 parent a16af94 commit 2eabe96

3 files changed

Lines changed: 158 additions & 160 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,12 @@
6363
1. [Math类](./研究Math类/README.md)
6464
1. [Data类](./研究Data类/README.md)
6565
1. [Global对象](./研究全局对象/README.md)
66+
1. [RegExp类型](./正则表达式/README.md)
67+
1. [定时器](./正则表达式/README.md)
6668

6769
---
6870

6971
- 小案例
70-
- [RegExp类型](./数据类型详解/RegExp类型.md)
7172
- [表格排序的写法和原理](./数据类型详解/表格排序的写法和排序)
7273
- [模块化开发日历控件](./数据类型详解/模块化开发日历控件)
7374

数据类型详解/RegExp类型.md

Lines changed: 0 additions & 155 deletions
This file was deleted.

正则表达式/readme.md

Lines changed: 156 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,159 @@
1-
正则表达式,广泛用在处理和验证字符串上
1+
程序员必备的知识
22

3-
[RegExp类型](../数据类型详解/RegExp类型.md)也笼统总结了;
3+
最起码要能写出常用替换、匹配的正则;实在不行也要能看懂的;
4+
5+
# RegExp 类型
6+
7+
主要是以下几个方面
8+
9+
- 创建
10+
- 元字符
11+
- 修饰符
12+
- 属性
13+
- 方法
14+
15+
# 创建
16+
17+
有两种方法,字面量和构造函数模式
18+
19+
- 字面量
20+
21+
var reg=/\d+/g;
22+
console.log(reg.test("789456"));//true
23+
24+
- 构造函数
25+
26+
var reg2=new RegExp("\\d+","g");
27+
console.log(reg2.test("1234444456"));//true
28+
console.log(reg2.test("asdsa"));//false
29+
30+
# 元字符
31+
32+
- 单个字符数字
33+
- . 匹配除换行符以外的任意字符
34+
- [a-zA-Z0-p] 与 [^a-zA-Z0-p] 匹配方括号中的任意字符,前面代^是匹配不在方括号中的任意字符;
35+
- \d 与 \D 匹配数字和匹配非数字;
36+
- \w 与 \W 匹配字符和匹配非字母
37+
- 空白字符
38+
- \O 匹配null字符
39+
- \b 匹配空格字符
40+
- \f 匹配换页符
41+
- \n 匹配换行符
42+
- \r 匹配回车符
43+
- \s 和 \S 匹配空白字符,空格、制表符或换行符。大写的S是匹配非空字符
44+
- \t 匹配制表符
45+
- 定位符
46+
- ^ 行首匹配
47+
- $ 行尾匹配
48+
- \A 只匹配字符串的开始处
49+
- \b \B 匹配单词便捷,词在[]内无效,匹配非单词边界
50+
- G 匹配当前搜索的开始位置
51+
- \Z \z 匹配字符串结束处或行尾,只匹配字符串结束处
52+
- 限定符
53+
- x? 匹配0个或一个x
54+
- x* 匹配0个或者任意多个x
55+
- x+ 匹配一个或者多个
56+
- x{m,n} 匹配m-n个x;
57+
- 分组
58+
- (?:x) 匹配x但不记录匹配结果(匹配不捕获)
59+
- x(?=y) 当x后面接y时匹配x
60+
- x(?!y) 当x后不是y时匹配x
61+
- 引用
62+
- \1...\9 $1...$9 返回就割在模式匹配期间找到的,最近保存的部分
63+
- 或模式
64+
- x|y|z 匹配x或者y或者z
65+
66+
# 修饰符
67+
可以记img,这样方便记住;
68+
69+
- i 忽略大小写模式
70+
- m 多行匹配
71+
- g 全局模式
72+
73+
# 属性
74+
75+
- 实例属性
76+
- global 布尔值,检测是走设置g标记
77+
- ignoreCase 布尔值,检测是否设置i标记
78+
- nultiline 布尔值,检测是否设置了m标记
79+
- lastIndex 整数,表示开始搜索下一个匹配项的字符位置,从 0 算起。
80+
- source 返回正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
81+
82+
通过这些属性可以获知一个正则表达式的各方面信息,但却没有多大用处,因为这些信息全都包含在模式声明中
83+
84+
var pattern1 = /\[bc\]at/i;
85+
console.log(pattern1.global); //false
86+
console.log(pattern1.ignoreCase); //true
87+
console.log(pattern1.multiline); //false
88+
console.log(pattern1.lastIndex); //0
89+
console.log(pattern1.source); //"\[bc\]at"
90+
var pattern2 = new RegExp("\\[bc\\]at", "i");
91+
console.log(pattern2.global); //false
92+
console.log(pattern2.ignoreCase); //true
93+
console.log(pattern2.multiline); //false
94+
console.log(pattern2.lastIndex); //0
95+
console.log(pattern2.source); //"\[bc\]at"
96+
97+
尽管第一个模式使用的是字面量,第二个模式使用了 RegExp 构造函数,但它们的source 属性是相同的。可见, source 属性保存的是规范形式的字符串,即字面量形式所用的字符串。
98+
99+
- 构造函数属性
100+
- $_ input 返回最近一次匹配的字符串
101+
- $& lastMatch 返回最近一次的匹配项
102+
- $+ lastParen 返回最近一次匹配的捕获组
103+
- $` leftContext 返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符
104+
- $' rightContext 返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符
105+
- $* multiline 检测表达式是否采用多行匹配m
106+
107+
# 方法
108+
109+
- 实例方法
110+
- test 在字符串中检测模式匹配,返回true或false
111+
- exec 该方法是专门为捕获组而设计的
112+
- 功能:正则捕获的数据,一个数组;
113+
- 参数:要应用模式匹配的字符串
114+
- 特性:
115+
- 使用全局标记g;持续查找所有匹配项并返回
116+
- 不使用全局标记g;始终返回第一个匹配项信息
117+
- 执行的过程
118+
- 检测字符串参数,获取正则表达式匹配文本
119+
- 找到匹配文本则返回一个数组
120+
- 第0个元素:与整个模式匹配的字符串
121+
- 其他元素:与捕获组匹配的字符串
122+
- 否则返回null
123+
- 派生属性
124+
- index 匹配项在字符串中的位置
125+
- input 应用正则表达式的字符串
126+
- length 返回数组元素的个数
127+
128+
var text = "cat, bat, sat, fat";
129+
var pattern1 = /.at/;
130+
var matches = pattern1.exec(text);
131+
console.log(matches.index); //0
132+
console.log(matches[0]); //cat
133+
console.log(pattern1.lastIndex); //0
134+
matches = pattern1.exec(text);
135+
console.log(matches.index); //0
136+
console.log(matches[0]); //cat
137+
console.log(pattern1.lastIndex); //0
138+
139+
var pattern2 = /.at/g;
140+
var matches = pattern2.exec(text);
141+
console.log(matches.index); //0
142+
console.log(matches[0]); //cat
143+
console.log(pattern2.lastIndex); //3
144+
145+
matches = pattern2.exec(text);
146+
console.log(matches.index); //5
147+
console.log(matches[0]); //bat
148+
console.log(pattern2.lastIndex); //8
149+
150+
第一个模式 pattern1 不是全局模式,因此每次调用 exec() 返回的都是第一个匹配项( "cat" )。而第二个模式 pattern2 是全局模式,因此每次调用 exec() 都会返回字符串中的下一个匹配项,直至搜索到字符串末尾为止。此外,还应该注意模式的 lastIndex 属性的变化情况。在全局匹配模式下, lastIndex 的值在每次调用 exec() 后都会增加,而在非全局模式下则始终保持不变。\
151+
152+
> IE 的 JavaScript 实现在 lastIndex 属性上存在偏差,即使在非全局模式下,lastIndex 属性每次也会变化。
4153
5-
程序员必备的知识;
6154

7-
最起码要能写出常用替换、匹配的正则;
155+
- 字符串方法
156+
- match 找到一个或者多个正则表达式的匹配
157+
- replace 替换与正则表达式匹配的子串
158+
- search 检索与正则表达式匹配的值
159+
- split 把字符串分割为字符串数组

0 commit comments

Comments
 (0)