Featured image of post JS正则表达式

JS正则表达式

本文主要总结了正则表达式的一些基础知识点,完整详细的正则知识学习,推荐老姚的JS正则表达式完整教程(略长)

2020年2月21日更新:

强烈推荐学习/使用正则表达式的在线网站:在线测试,验证正则表达式的工具。

正则表达式基础知识

^匹配开始
$匹配结束
? 0个或1个 do(es)?能匹配do和does
* 0个或多个 zo*能匹配z和zoo
+ 1次或多次 zo+能匹配zo或zoo,但不能匹配z
. 匹配除"\n"以外的任意字符

\d 任何一个数字字符,等价于0-9  \D任何非数字字符
\w 包括下划线在内的任何单词字符 等价  [0-9a-zA-Z_]
{number} 设置匹配字符数量

创建正则实例化对象

  1. 字面量方式:通过两个反斜杠“/”,/模式/修饰符;
1
2
3
var str1 = "wwww22222";
var exp1 = /[a-z 0-9]/;
console.log(exp1.test(str1));//true

手机号正则表达式验证

1
2
3
var str = '15012345678';
var exp = /^1[3|4|5|7|8]\d{9}$/;
console.log(exp.test(str)); //true

用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;

整数正则var intPattern = /^-?\d+$/;

邮箱Email正则 var reg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; 2. 构造函数方式:通过new RegExp(模式,修饰符);

1
2
3
var str = "cdbbdz";
var exp = new RegExp("d(b+)d", "g");
console.log(exp.test(str)); //true

使用正则表达式的方法

test() 测试是否包含exp方法,返回true或false 字符串的方法:search()、match()、 replace()、split() 当你想要知道在一个字符串中的一个匹配是否被找到,你可以使用test或search方法;想得到更多的信息(但是比较慢)则可以使用exec或match方法。

strObj.search( regexp ):检查字符串与当前的正则模式所匹配的子字符串首次出现的位置,返回匹配成功子字符串的位置;若没有的话,则返回-1。

1
2
3
4
5
var str = "javascript";
console.log(str.search(/script/)); //下标为:4
if (str.search(/script/) !== -1) {
 console.log("通过");
}

strObj.match(regexp):检查字符串把与正则模式所匹配的子字符串,以数组的形式输出。

1
2
var str = "0你好,1我好,大家好";
console.log(str.match(/\d/g)); //["0", "1"]

strObj.replace( regexp,newStr | fn ):检查字符串与正则模式所匹配的子字符串,并替换。

1
2
var str = "如果你感兴趣,可添加淘宝或微信账号x12345联系";
console.log(str.replace(/淘宝|微信|百度/g, "**")); // 如果你感兴趣,可添加**或**账号x12345联系

strObj.split(regexp,n):切割字符串,返回数组格式的结果。第二个参数是限制返回的数组长度。

1
2
3
var str = "如果你111爱我.2222如果我也爱你333 那我们就在一起吧";
console.log(str.split(/\d+/g)); //["如果你", "爱我.", "如果我也爱你", " 那我们就在一起吧"]
console.log(str.split(/\d+/g,2));//["如果你", "爱我."]

exec():查找当前字符串与正则模式所匹配的文本,最终存储在数组里;匹配不成功返回null。

1
2
3
4
5
var user = "{{1007}},{{1008}},{{1009}},{{1010}}";
var exp = /\{\{(\d+)\}\}/g;
var result = exp.exec(user);
console.log(result);
// ["{{1007}}", "1007", index: 0, input: "{{1007}},{{1008}},{{1009}},{{1010}}"]

参考资料:正则表达式 | MDN

Built with Hugo
Theme Stack designed by Jimmy