正则表达式

正则表达式

类型Object,是一套字符串的匹配规则,通常用于字符串格式校验、字符串内容过滤等。

注意:正则是按位匹配的。

正则的创建方式

(1)字面量创建://表示正则对象,//间写正则规则

var reg = /a/g;//去字符串中匹配字符"a"
console.log(reg);

(2)系统提供的构造方法RegExp创建正则对象

参数有两个,都是string类型
1.表示正则规则的内容,就相当于//中间的内容
2.表示正则规则的修饰,i、g
var reg = new RegExp(“a”,“g”);
console.log(reg);

注意:构造方法创建正则对象可以解析变量,而字面量创建正则对象不行,所以当匹配规则动态时需要使用构造创建,固定不变时就使用字面量。

正则的操作方法:test()

test():正则对象调用方法,要匹配的string为参数,返回值为boolean,匹配成功返回true,匹配失败返回false;
正则匹配规则,默认情况下,会从目标字符串的第一位字符开始匹配,第一次匹配成功停止匹配返回true,如果始终没有匹配成功那么会一直匹配到字符串结束返回false。

var str = “https://www.baidu.com”;

元字符

元字符:正则将一些字符做了特殊的定义,在正则表达式中,它们不在表示其原本的字面意思,而是有对应的含义,如果需要匹配元字符的字面值,那么需要对元字符进行转义。

.元字符:匹配除了换行符以外的任意字符 \n
如果需要匹配".",那么需要使用""对元字符进行转义
var reg = /./;
console.log(reg.test(str));

^元字符:出现在正则的开头,匹配以符号后的字符作为开头
str = “http://”;
reg = /^http/;
console.log(reg.test(str));

**KaTeX parse error: Can't use function '\.' in math mode at position 67: …u.com"; reg = /\̲.̲com/;
console.log(reg.test(str));

元字符:匹配符号前字符连续出现0次或多次
str = “accaaacbc”;
reg = /aa
bc/; //-> “abc”
console.log(reg.test(str));

+元字符:匹配符号前字符连续出现1次或多次
reg = /a+bc/; //-> “abc”
console.log(reg.test(str));

?元字符:匹配符号前字符出现1次或0次
reg = /^https?😕//;
str = “httpqzhjdwi://www.baidu.com”;
console.log(reg.test(str));

{}元字符:匹配符号前字符串出现指定的次数
{11}:符号前字符连续出现11次
reg = /1{11}/; // -> “11111111111”
str = “11111111111111111”;
console.log(reg.test(str));
{0,}:等价于*,表示0到多次
{1,}:等价于+,表示1到多次
{0,1}:等价于?,表示1次或0次
reg = /^https?😕{2}w{3}./; // “https://www.”

[]元字符:匹配符号中任意一位字符
reg = /1{11}$/;
str = “13212345678”;
console.log(reg.test(str));

-元字符:只在[]元字符中起作用,连字符,匹配连续区间;[]外就只是一个普通"-"字符。
注意:区间只能是连续的升序区间
reg = /[1234567890]/; //任意一位数字
reg = /[0-9]/; //任意一位数字
reg = /[a-zA-Z]/; //任意一位字母

**元字符**:当出现在[]中,脱字符,匹配除了[]中的任意一位字符。
reg = /[0-9]/; //不能以数字开头

()元字符:组匹配,将()中的字符作为一个整体进行匹配
reg = /^https?/;
reg = /^(http)s?/;

|元字符:匹配符号左右两侧任意一侧字符
reg = /(a|b)c/; // “a” || “bc”
str = “qc”; // “ac” || “bc”
console.log(reg.test(str));

预定义的元字符
\d:等价于[0-9],匹配任意一位数字
\D:等价于[^0-9] ,匹配除了数字的任意一位字符
\w:等价于[0-9a-zA-Z_],匹配数字、字母、下划线任意一位
\W:等价于[^0-9a-zA-Z_],匹配除了数字、字母、下划线的任意一位字符
\s:匹配一位空格字符串
\S:匹配除了空格以外的任意一位字符

正则修饰符

正则修饰符,是跟在正则表达式后面用于对匹配规则进行条件修饰的特殊字符
i:匹配的字母字符不区分大小写
var reg = /[a-z]/i;
var str = “A”;
console.log(reg.test(str));

g:设置正则匹配为全局匹配,从目标字符串的第一位开始匹配,一直匹配到字符串结束,最后将结果返回。

// 中文匹配
// \u匹配中文,中文也存在连续区间,[\u4e00-\u9fa5] 表示任意一个中文字符(生僻字,部分繁体字,后现代创造字)
var str = “中文”;
var reg = /2{2,}$/g;

1.敏感词过滤
var str = “这是一个字符串”;
// 敏感词:这、一个
var reg = /这|一个/g;


str = str.replace(reg,function(res){
​ var start = “”;
​ for(var i=0;i<res.length;i++){
​ start += “*”;
​ }
​ return start;
});
console.log(str);

2.手机号码的验证
11位 纯数字 1开头 2位不能是012 3位开始任意数^1字
var reg = /^1[3-9]\d{9}$/;

3.邮箱的验证
1234567890@qq.com
rtyui5678@1635.com
rtyui_5678@126.com
以数字、字母_开组合 后面跟上@符号 数字字母的至少两位 英文. 字母组合最少两位 可以存在.xx后缀
var reg = /^\w+@[0-9a-z]{2,}.[a-z]{2,}(.[a-z]{2,})?$/;
var str = “rtyuiop@56.com.cn”;
console.log(reg.test(str));

4.IP地址
xxx.xxx.xxx.xxx ,xxx取值范围0-255
var reg = /^(\d{1,3}.){3}\d{1,3}KaTeX parse error: Undefined control sequence: \d at position 25: …g = /^(([1-9]|1\̲d̲|2[0-4])?\d|25[…/;
0-9 一位数 \d
1-9 0-9 两位数 [1-9]\d
1 0-9 0-9 1开头的三位数 1\d\d
2 0-4 0-9 2开头的三位数 2[0-4]\d
2 5 0-5 25[0-5]

5.网址验证
以网络协议http或https开头后面跟上://
域名www.数字字母至少一次出现.至少两位字母出现
var reg = /^https?😕/w{3}.[0-9a-zA-Z]+.[a-zA-Z]{2,}/;


  1. 1234567890 ↩︎

  2. \u4e00-\u9fa5 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值