js正则入门
实例化RegExp对象
字面量:/ 正则 /
var reg=/\bis\b/g;
其中\b代表单词边界,修饰符g代表全局构造函数
var reg=new RegExp(‘\\bis\\b’,’g’);
此处有两个\其中一个为转义符
修饰符
g:全文搜索,不添加搜索到第一个匹配就停止
i:忽略大小写,默认(不添加i)大小写敏感
m:处理换行符,把其当成新的一行
如 “kkhh
jjj
5566”
说明:此字符串被换行符换行,但js不认为其为新的一行
元字符
(区别于原意文本字符):正则表达式中有特殊含义的非字母字符
\t:水平制表符
\v:垂直制表符
\n:换行符
\r:回车符
\0:空字符
\f:换页符
\cX:与X对应的控制字符(Ctrl+X)
* + ? $ ^ . | \ () {} []
字符类
- 使用元字符[]来构建一个简单的类
例如:[abc]表示匹配类a或b或c - 字符类去反
例如:[^abc]表示匹配类a或b或c所有以外的内容
范围类
- 如[a-z]表示a到z之间所有字母(包含a和z)
- 可以连写,如:[a-zA-Z]代表小写a-z和大写A-Z
- 如果想匹配到这个横线类“-”咋办?
答:类是可以连写的,所以字符类和范围类也可以连写,故匹配横线这样就可以了[a-z-]
预定义类
| 字符 | 等价类 | 含义 |
|---|---|---|
| . | [^\r\n] | 除回车符和换行符以外的所有字符 |
| \d | [0-9] | 数字字符 |
| \D | [^0-9] | 非数字字符 |
| \s | [\t\n\x0B\f\r] | 空白符 |
| S | [^\t\n\x0B\f\r] | 非空白符 |
| \w | [a-zA-Z_0-9] | 单词字符(包括字母,数字下划线) |
| \W | [^a-zA-Z_0-9] | 非单词字符 |
常见的边界
^ 以xxx开始
$ 以xxx结束
\b 单词边界
\B 非单词边界
量词
匹配连续出现若干次的内容
?:出现零次或一次(最多出现一次)
+:出现一次货多次(至少出现一次)
*:出现零次或对此(任一次)
{n}:出现n次
{n,m}:n到m次
{n,}:至少出现n次
贪婪模式:尽可能多得匹配
非贪婪模式:尽可能少的匹配(用法:在量词后面加上问号即可)
分组
- 使用()分组,使用量词作用于分组
- 用$捕获分组内容,从左向右捕获分别为:\$1,\$2,\$3……
前瞻和正则对象属性
前瞻:举个栗子:”a2*3”.replace(/\w(?=\d)/g),”X”
解析:替换后面是数字的单词字符为X,即为:X2*3
属性:
1.global:false/ture
2.ignore case:false/ture
3.multiline:false/ture
4.lastIndex:当前匹配内容的最后一个字符的下一个字符的下标
5.source:正则表达式的文本字符串
正则的对象的方法
- text(str)
用于测试字符串参数中是否存在匹配正则表达式模式的字符串,存在true,否则false exec(str)
如果没有匹配到文本就返回null,否则返回一个数组:
数组额外属性:- index匹配文档的第一个字符的位置
- input存放被检索的字符串string
数组元素:
- 第一个:与正则匹配的文本
- 第二个:正则对象的第1个子表达式(分组)匹配的内容
- 第三个:正则对象的第2个子表达式(分组)匹配的内容
.
.
. - 第N个 :正则对象的第(N-1)个子表达式(分组)匹配的内容
字符串方法
search():
检索字符串或正则表达式匹配的子字符串,返回第一个匹配结果index,查不到返回-1(忽略正则全局g)

691

被折叠的 条评论
为什么被折叠?



