正则表达式概述
- 表达式概念:
- 一种字符串检索模式;
- 表现为字符串形式的object对象;
- 可进行文本搜索和替换。在前端页面中一般用于表单验证;
- 语法:正则字面量表达方式:/正则表达式主体/修饰符(可选);
var reg = /abc/i;
- 实际开发中正则表达式会配合字符串的search和replace方法来使用;
- search():用于检索与正则表达式相匹配的子字符串,并返回字符串的起始位置;
- match():用于在原字符串中匹配第一个指定字符串的信息,例如(["b", index: 8, input: "loadfsdfbfasdfa"]),如果没有则返回null;
- 有g修饰符时,正则返回所有满足条件的字符串的集合;
- replace:不修改原有字符串;
- 修饰符
- 常见的修饰符有三种:i、g、m;
- i:忽略大小写;
- g:全局;
- m:换行匹配,对正则中的^$产生影响;
- 检索模式([]表示包含其中一个的值,{}代表一个词组,):
- 表达式模式:[abc]、[0-9]、[m|n],每个内容都代表一类值,而不是字面的意思;
- [abc]:包含a或者b或者c,[a][b][c]:包含abc;
- [0-9]:在指定字符串中检索,查找任何满足【0-9之间】规则的字符或者字符串,该模式对字母也适用,注意结束位置要大于开始位置;
- (m|n):任何满足以“|”分割的选项之一,注意要用小括号括起来;
- 元字符模式(具有特殊含义的字符称为元字符);
- \d:数字,等同于[0-9];
- \s:表示空格;
- \b:表示边界\0,或以空格和换行隔开的;
- 量词模式(检索的字符或字符串出现的次数,仅对前面的一个字符有作用);
- n+:一个或者多个;
- n*:包含0个或者多个n(对空格也会起作用,贪婪模式);
- n?:要么0次,要么1次;
- .:表示任意字符;
- RegExp对象:
var reg = new RegExp(正则表达式的内容,修饰符);//参数均采用字符串的形式;
- 两个参数均为字符串类型;
- 提供的方法;
- test():本方法判断是否有满足正则条件的字符串,有就返回true,没有就返回false;
- exec():查找原字符第一个满足正则条件的下标和内容,查找失败则返回null,当RefExp是全局模式(g)时,当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。也就是说,我们可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0;
var str = 'loaB11aadbfsdfbfabsdbfa';
var reg = new RegExp('ab','gi')
var res = reg.exec(str)
console.log(reg,str.match(reg))///ab/gi ["aB", "ab"]
console.log(reg.test(str))//true
console.log(res)//["aB", index: 2, input: "loaB11aadbfsdfbfabsdbfa"]
res = reg.exec(str)
console.log(res)//["ab", index: 16, input: "loaB11aadbfsdfbfabsdbfa"]
- 初末尾字符:
- ^:初位字符
- $:末尾字符
- 重复类:
- 用{}来匹配字符连续出现的次数;
- {n}恰好n次,{n,}至少出现n次,{n,m}至少n次,至多m次;
- 贪婪模式和懒惰模式:
- 贪婪模式(少用):只要符合正则要求的就一直往下匹配(n*);
- 懒惰模式:一旦匹配到符合正则要求的内容,就立刻立刻结束的行为模式(n?);
- 脱字符
- 仅当出现在中括号首位时,^可以表示“不是”的意思 ;
- 12个常用的js正则表达式
- 补充中……