正则对象
正则基础
RegExp(正则表达式)
正则表达式(RegExp)是Regular Expression缩写,是用于查找符合某些规则的字符串的工具。
正则表达式是一个描述字符模式的对象,当检索某个文本时,可以使用一种模式来描述要检索的内容,RegExp 就是这种模式。
正则对象的创建
构造函数式 new RegExp(pattern,attribute)
参数: pattern:匹配模式 attribute:匹配特征
例:var reg = new RegExp("a","g");
字面量式 /pattern/attribute
例:var reg1 = /a/i;
正则对象的属性
-
global:全局的,对应修饰符 g
-
ignoreCase:忽略大小写,对应修饰符 i
-
multiline:多行,对应修饰符m
-
lastIndex:下一次匹配的字符位置
var str = "hello world"; var reg3 = /l/g; console.log(reg3.exec(str)); console.log(reg3.lastIndex);// 3 console.log(reg3.exec(str)); console.log(reg3.lastIndex);// 4 console.log(reg3.exec(str)); console.log(reg3.lastIndex);// 10 console.log(reg3.exec(str)); console.log(reg3.lastIndex);// 0
正则对象的方法
test():
测试方法,用于测试一个字符串是否符合正则表达式对象所指定的模式规则,返回true或false
var str = "hello world";
var reg1 = /o/;
console.log(reg1.test(str)); // true
exec():
搜索方法,用于在字符串中查找符合正则表达式对象所指定的模式的子字符串,返回找到的结果,若找不到则返回null
var str = "hello world";
var reg1 = /d/;
console.log(reg1.test(str)); // ["d", index: 10, input: "hello world", groups: undefined]
匹配模式pattern
-
元字符:具有特殊含义的字符
\s:匹配任何的空白字符
\S:任何非空白字符
\d:匹配一个数字字符,等价于[0-9]
\D:除了数字之外的任何字符,等价于[^0-9]
\w:匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_]
\W:任何非单字字符,等价于[^a-zA-z0-9_]
.:匹配除了换行符之外的任意字符 -
量词:指定字符出现的次数
{n}:匹配前一项n次
{n,}:匹配前一项至少n次
{n,m}:匹配前一项至少n次最多m次
*:匹配前一项至少0次最多无数次,{0,}
+:匹配前一项至少1次最多无数次,{1,}
?:匹配前一项最多1次,{0,1} -
特殊符号:具有特定含义的符号
/…/:代表一个模式的开始和结束
^:匹配字符串的开始,即表示行的开始
$:匹配字符串的结束,即表示行的结束
[ ]:表示可匹配的列表
( ):用于分组
|:表示或者[^ ]:在[ ]中的尖括号表示非
string对象的正则方法
match()
检索返回一个字符串匹配正则表达式的的结果。
返回存放匹配项的数组
var str = "hello! world! how are you!"
console.log(str.match(/w/));
console.log(str.match(/o/g));
search()
执行正则表达式和 String 对象之间的一个搜索匹配。
返回检索到的匹配项的索引
var str = "hello! world! how are you!"
console.log(str.search(/[^\w]/)); // 5
console.log(str[str.search(/[^\w]/)]); // !
replace(regexp|substr, newSubStr|function)
用一个字符串或正则表达式替换指定字符串
返回 被替换后的新字符串
var str = "hello! world! how are you!"
console.log(str.replace(/[^\w]/g,2)); //hello22world22how2are2you2
split()
使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串或正则表达式来决定每个拆分的位置。
返回被拆分后的数组
var str1 = "hello!world#how@are*you"
console.log(str1.split(/[^\w]/)); // (5) ["hello", "world", "how", "are", "you"]
小练习
var reg = /\d+/; // 匹配数字至少一次
var reg = /^\d+$/; // 只能是数字,至少出现一次
var reg = /^\d{3,}$/; // 只能是数字,至少出现3次
var reg = /^[abc]+$/; // 只能是abc中的字母组成,至少一次
var reg = /^[ab]+$/i; // 只能是ab中的字母组成,不区分大小写,至少一次
var reg = /^[^a-z]+$/i; // 只能是a-z之外的字符组成,不区分大小写,至少一次
var reg = /^[^ab]+$/; // 只能是ab之外的字符组成,至少一次
var reg = /^[A|B]?$/; // 只能出现一次A或者B或者空