JS正则(规则)表达式
W3SCHOOL教程链接:
1.JavaScript 正则表达式
2.JavaScript RegExp 参考手册
什么是正则表达式?
正则表达式是由一个字符序列形成的搜索模式。
当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。
正则表达式可以是一个简单的字符,或一个更复杂的模式。
正则表达式可用于所有文本搜索和文本替换的操作。
定义语法
//方法一:构造函数创建,比较灵活
var req = new RegExp("runoob","i");
/* 方法二:字面量的方式创建,比较简单
/正则表达式主体/修饰符(可选)
*/
var patt = /runoob/i;
/* /runoob/i 是一个正则表达式。
runoob 是一个正则表达式主体 (用于检索)。
i 是一个修饰符 (搜索不区分大小写)。
*/
使用例子
eg:
// |表示或者
var reg = /a|b/i;
//也可以用[]表示或者
var reg2 = /[ab]/i;
//判断字符串中有字母,加i不区分大小写
var reg3 = /[A-z]/;
console.log(reg.test("ac")); //true
// ^表示异或,有一个除了[]里的都返回ture
var reg4 = /[^a-z]/;
console.log(reg4.test("abc")); //false
console.log(reg4.test("a0")); //true
var reg5 = /^/;
console.log(reg5.test("$")); //不管""里面是啥都返回true
//正则表达式妙用
//1.与split运用,拆字符串,返回数组
var str = "a1b2c3d4e5";
var result = str.split(/[A-z]/);
console.log(result);
/* 返回的是不包含字母的数字集合,但是第一个元素是空格,长度为6
需要注意按照规则里面有几个字母就会拆分几次,注意!!!
*/
//2.match提取字符,返回数组
str = "a1b2c3d4e5A6";
var result2 = str.match(/[a-z]/);
console.log(result2); //只返回第一个检索到的字母
var result3 = str.match(/[a-z]/ig); //修饰符可以写多个
console.log(result3); //添加了g全局,可以提取全部字母
//3.replace替换字符串,利用正则表达式控制替换
str = "a1b2c3d4e5A6";
var result5 = str.replace(/[a-z]/,"@_@");
console.log(result5); //只替换第一个,返回@_@1b2c3d4e5A6
var result5 = str.replace(/[a-z]/ig,"@_@");
console.log(result5); //全部替换,返回@_@1@_@2@_@3@_@4@_@5@_@6
//4.search搜索字符串是否存在某字符串
str = "a1a2a3d4e5A6";
var result6 = str.search(/[a]/);
console.log(result6); //返回0 表示第0个元素
var result7 = str.search(/[a]/g);
console.log(result7); //返回0 表示第0个元素,search只会查找第一个元素,即使设置全局匹配也没用
/*
量词:通过量词控制正则表达式内容出现次数,只对前面一个起作用
语法:/a{n}/ n表示a出现次数
/ab{n,m}c/ 表示b出现次数n-m次,如果m不给则表示n次以上
*/
var reg11 = /a{3}/;
var result11 = reg11.test("aaadsa"); //true
result11 = reg11.test("abaa"); //false
var reg12 = /(ab){3}/; //加个括号表示ab是整体
var result12 = reg11.test("ababab"); //true
console.log(reg.test("Ac")); //true
注意!
正则表达式中有些特殊字符需要使用转义字符
图片选自W3SCHOOL文档