正则表达式
2019-03-15 16:13:54 0 举报
AI智能生成
正则总结
作者其他创作
大纲/内容
创建方式
构造函数创建
var str = 'hello World';
var reg1 = new RegExp('e','ig');
console.log(reg1)
var reg1 = new RegExp('e','ig');
console.log(reg1)
参数1 正则表达式(不能有空格
参数2 匹配模式:常用g(全局匹配;找到所有匹配,而不是第一个匹配后停止)和i(忽略大小写)
字面量方式创建
字面量方式创建
var reg2 = /o/gi;//检测字符e,不区分大小写,全局匹配
方法
test()
检测字符串中是否包含定义字符模式,返回布尔
exex()
检索字符串中指定的值。匹配成功返回一个数组,匹配失败返回null
match()
在字符串内检索指定的值,匹配成功返回存放匹配结果的数组,否则返回null
search()
在字符串内检索指定的值,匹配成功返回第一个匹配成功的字符串片段开始的位置,否则返回-1。
var reg=/javascript/i;
console.log('hello Javascript Javascript Javascript'.search(reg));//6
console.log('hello Javascript Javascript Javascript'.search(reg));//6
replace()
替换与正则表达式匹配的子串,并返回替换后的字符串。在不设置全局匹配g的时候,只替换第一个匹配成功的字符串片段。
var reg1=/javascript/i;
var reg2=/javascript/ig;
console.log('hello Javascript Javascript Javascript'.replace(reg1,'js'));
//hello js Javascript Javascript
console.log('hello Javascript Javascript Javascript'.replace(reg2,'js'));
//hello js js js
var reg2=/javascript/ig;
console.log('hello Javascript Javascript Javascript'.replace(reg1,'js'));
//hello js Javascript Javascript
console.log('hello Javascript Javascript Javascript'.replace(reg2,'js'));
//hello js js js
split()
把一个字符串分割成字符串数组
元字符(匹配的规则)
非打印字符
\cx
匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f
匹配一个换页符。等价于 \x0c 和 \cL。
\n
匹配一个换行符。等价于 \x0a 和 \cJ。
\r
匹配一个回车符。等价于 \x0d 和 \cM。
\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
\S
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t
匹配一个制表符。等价于 \x09 和 \cI。
\v
匹配一个垂直制表符。等价于 \x0b 和 \cK。
特殊字符
$
以什么什么结尾
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
.
匹配除换行符以外的任意字符
var str = "oweb"; var reg = /./g;
console.log(reg.exec(str));
var str = "www/baidu/com";
var reg = /www\......\.com/g; //如果想不让字符有其他意义 转义\
console.log(reg.exec(str));
console.log(reg.exec(str));
var str = "www/baidu/com";
var reg = /www\......\.com/g; //如果想不让字符有其他意义 转义\
console.log(reg.exec(str));
[ ]
匹配[]里面的任意一个字符
var str1 = "4awebadsads"; var reg1 = /[a-zA-Z0-9]/g; // 匹配字母还是数字
console.log(reg1.exec(str1));
var str2 = "1s34";
var reg2 = /[0-9][0-9][0-9]/g;
console.log(reg2.exec(str2));
console.log(reg1.exec(str1));
var str2 = "1s34";
var reg2 = /[0-9][0-9][0-9]/g;
console.log(reg2.exec(str2));
[^]
所有不在这个范围内的字符
var str3 = "abd";
var reg3 = /[^a-z]/g; //匹配除小写字母以外的任意字符
console.log(reg3.exec(str3));
var reg3 = /[^a-z]/g; //匹配除小写字母以外的任意字符
console.log(reg3.exec(str3));
\d和\D
var str4 = "web";
var reg4 = /\d/g; //匹配数字
var reg5 = /\D/g; //非数字
console.log(reg4.exec(str4)); //null
console.log(reg5.exec(str4)); //w
var reg4 = /\d/g; //匹配数字
var reg5 = /\D/g; //非数字
console.log(reg4.exec(str4)); //null
console.log(reg5.exec(str4)); //w
\w和\W
var reg6 = /\w/g; //匹配数字 字母 下划线_
var reg7 = /\W/g; //匹配除数字 字母 下划线以外的任意字符
console.log(reg6.exec(str4)); //w
console.log(reg7.exec(str4)); //null
var reg7 = /\W/g; //匹配除数字 字母 下划线以外的任意字符
console.log(reg6.exec(str4)); //w
console.log(reg7.exec(str4)); //null
\s和\S
var reg8 = /\s/g; //空格
var reg9 = /\S/g; //非空白字符
console.log(reg8.exec(str4)); //null
console.log(reg9.exec(str4)); //w
var reg9 = /\S/g; //非空白字符
console.log(reg8.exec(str4)); //null
console.log(reg9.exec(str4)); //w
^
以什么什么开头
var str = "www.";
var reg10 = /^www/g; // ^字符
console.log(reg10.exec(str));
var reg10 = /^www/g; // ^字符
console.log(reg10.exec(str));
()
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
*
匹配0个或任意多个字符 尽可能多的匹配 ,要匹配 * 字符,请使用 \*。
+
匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
?
匹配前面的字符0个或一个
var strs = "webr44546ere";
var reg12 = /[0-9]?/g;
console.log(reg12.exec(strs));
var reg12 = /[0-9]?/g;
console.log(reg12.exec(strs));
重复的字符
{ }
{10}
匹配连续的10个字符
var stra = "11274567800";
var rega = /^1\d{10}$/g; //匹配连续的十个数字
console.log(rega.exec(stra));
var rega = /^1\d{10}$/g; //匹配连续的十个数字
console.log(rega.exec(stra));
{1,4}
最少一个最多4个
var strb = "edg";
var regb = /^[a-zA-z]{2,3}$/g;
console.log(regb.exec(strb));
var regb = /^[a-zA-z]{2,3}$/g;
console.log(regb.exec(strb));
||
或者
var strc = "www.google"; //baidu google ujiuye
var regc = /www.baidu|google|ujiuye/g;
console.log(regc.exec(strc));
var regc = /www.baidu|google|ujiuye/g;
console.log(regc.exec(strc));
相关练习
1. 检索字符串中是否不包含字母
var str = '12';
var reg1 = /[^a-zA-Z]/g;
if(reg1.test(str)) {
console.log('不包含');
} else {
console.log("包含");
}
var reg1 = /[^a-zA-Z]/g;
if(reg1.test(str)) {
console.log('不包含');
} else {
console.log("包含");
}
2.去除字符串首尾空格
var str2 = " hello word! "; //开头的空格
var reg = /^\s+/ig; //? * +
var str3 = str2.replace(reg, "");
var reg2 = /\s+$/ig;
var str4 = str3.replace(reg2, "");
console.log("|" + str4 + "|");
var reg = /^\s+/ig; //? * +
var str3 = str2.replace(reg, "");
var reg2 = /\s+$/ig;
var str4 = str3.replace(reg2, "");
console.log("|" + str4 + "|");
3.检查用户账号
function checkUser(str) { var re = /^[a-zA-z]\w{3,15}$/;
if(re.test(str)) {
console.log("正确");
} else {
console.log("错误");
}
}
checkUser("alex_hah"); //调用
if(re.test(str)) {
console.log("正确");
} else {
console.log("错误");
}
}
checkUser("alex_hah"); //调用
4.匹配11位手机号码
验证规则:11位数字,以1开头
function checkMobile(str) { var re = /^1\d{10}$/
if(re.test(str)) {
console.log("正确");
} else {
console.log("错误");
}
}
checkMobile('13800138000'); //调用
checkMobile('139888888889'); //错误示例
if(re.test(str)) {
console.log("正确");
} else {
console.log("错误");
}
}
checkMobile('13800138000'); //调用
checkMobile('139888888889'); //错误示例
5.匹配电话号码
验证规则:区号+号码,区号以0开头,3位或4位 // 号码由7位或8位数字组成
// 区号与号码之间可以无连接符, 也可以“ - ”连接
// 区号与号码之间可以无连接符, 也可以“ - ”连接
function checkPhone(str) {
var re = /^0\d{2,3}-?\d{7,8}$/;
if(re.test(str)) {
console.log("正确");
} else {
console.log("错误");
}
}
checkPhone("095-57777777"); //调用
var re = /^0\d{2,3}-?\d{7,8}$/;
if(re.test(str)) {
console.log("正确");
} else {
console.log("错误");
}
}
checkPhone("095-57777777"); //调用
6.验证邮箱
验证规则:姑且把邮箱地址分成“第一部分@第二部分”这样
// 第一部分: 由字母、 数字、 下划线、 短线“ - ”、点号“.”组成,
// 第二部分: 为一个域名, 域名由字母、 数字、 短线“ - ”、域名后缀组成,
// 而域名后缀一般为.xxx或.xxx.xx, 一区的域名后缀一般为2 - 4 位, 如cn, com, net, 现在域名有的也会大于4位
// 第一部分: 由字母、 数字、 下划线、 短线“ - ”、点号“.”组成,
// 第二部分: 为一个域名, 域名由字母、 数字、 短线“ - ”、域名后缀组成,
// 而域名后缀一般为.xxx或.xxx.xx, 一区的域名后缀一般为2 - 4 位, 如cn, com, net, 现在域名有的也会大于4位
function checkEmail(str) { var re = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
if(re.test(str)) {
console.log("正确");
} else {
console.log("错误");
}
}
checkEmail("alex@cnblogs.cn"); //调用
if(re.test(str)) {
console.log("正确");
} else {
console.log("错误");
}
}
checkEmail("alex@cnblogs.cn"); //调用
0 条评论
下一页