JS正则表达式

正则表达式基础知识

^匹配开始
$匹配结束
? 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} 设置匹配字符数量
知识兔h3 id="创建正则实例化对象">创建正则实例化对象
  1. 字面量方式:通过两个反斜杠“/”,/模式/修饰符;
    1
    2
    3
    知识兔td>
    var str1 = "wwww22222";
    var exp1 = /[a-z 0-9]/;
    console.log(exp1.test(str1));//true
    知识兔td>

手机号正则表达式验证

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

用户名正则,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_-]+)+$/;

  1. 构造函数方式:通过new RegExp(模式,修饰符);
    1
    2
    3
    知识兔td>
    var str = "cdbbdz";
    var exp = new RegExp("d(b+)d", "g");
    console.log(exp.test(str)); //true
    知识兔td>

使用正则表达式的方法

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

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

1
2
大专栏  JS正则表达式="line">3
4
5
知识兔td>
var str = "javascript";
console.log(str.search(/script/)); //下标为:4
if (str.search(/script/) !== -1) {
console.log("通过");
}
知识兔td>

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

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

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

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

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

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

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

1
2
3
4
5
知识兔td>
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}}"]
知识兔td>

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

计算机