正则表达式怎么写

来自知乎:什么是正则表达式,怎么写,使用场景等都在这里了 - 永超前端的文章 - 知乎 https://zhuanlan.zhihu.com/p/385698392

三、正则表达式要怎么写

语法(公式)

  • 使用new关键字(了解)
var reg=new RegExp('正则规则','属性');//属性可选
   1.正则规则
   	如何写正则,即后面要重点学习的
   2.属性
   	i:ignore  忽略大小写
       g:Global  全局
       	"这是我的QQ:566666,说了的国家你说大概,你的QQ是:882423,马化腾的是10000";
   		如果不添加g,则只会找一个,添加了,才会找所有QQ
       m:multiple   
   	   多行搜索(很少用)
       以上属性可以都不写,也可以只写1个,或全部
   //比如:
   var reg=new RegExp('[1-9]\d{4,9}') 
   var reg=new RegExp('[1-9]\d{4,9}','ig');   
  • 使用字面量(常用的)
var obj={}
var arr=[]
--
var reg=/正则规则/属性;
比如:
var reg=/[1-9]\d{4,9}/;
var reg=/[1-9]\d{4,9}/igm;四、正则规则怎么写(法律规则)

四、正则规则怎么写(法律规则)

/^1[3-9]\d{9}$/ 这是手机的正则规则,相当于是要学的全部。

  • 关键字原文-最简单的正则写法
   var reg=/abc/;//表示匹配abc3个字母
   var reg=/cctv/;//
   var reg=/我们/;//
   var reg=/1/;
  • 区间
   []表示范围
   var reg=/[123]/;//表示1或2或3中任意一个
   var reg=/[0-9]/;//表示0-9中的任意一个
   var reg=/[a-z]/;//
   var reg=/[a-zA-Z]/;//a-z,A-Z中的任意一个
   var reg=/[0-9a-z-_]/;//表示需要出现0-9,a-z和_-
   var reg=/[\u4e00-\u9fa5]/;//表示是中文
  • 转义字符(升级版的区间)
   1. \d   digit匹配所有的数字,相当于[0-9]
      \D   表示非数字,即\d的反面,相当于[^0-9]
   2. \w	word 匹配所有的字母、数字和下划线等[0-9a-zA-Z_]
      \W   取反,表示非字母、数字、下划线[^0-9a-zA-Z_]
   3. \s   space,表示空格
      \S   表示非空格
       替换字符串空格
   4. .  表示匹配任意字符,慎用
      如果要匹配.本身,如何做:需要添加\.表示不转义
  • 量词,修饰它前面的正则,表示可以出现的次数
   1. {n,m}  {2,4}  刚好出现n到m次
   2. {n}   {2}  刚好出现n次
   3. {n,}  {2,}  最少2次
   4. *  任意次,即可有可无,多了不限,也可以这样表示 {0,}
   5. ?  表示0次或1次  /\d?\d/;  0-99   表示:{0,1}
   6. +  表示至少1次  等价于{1,}
   ---写下QQ--
   QQ规则:5-10位数字都可以,但是第一位不能是0
   var reg=/[1-9]\d{4,9}/;
  • 以什么开头、以什么结束, 修饰作用(主要用于表单验证中)
   1.如果^写在/的后面1位,则表示以什么开头,用来修饰它后面的正则规则
   var reg=/^\d/; //表示要以数字开头
   
   2. 如果$写在最后面,即/的前面一位,表示以什么结束,修饰它前面的那个正则
   var reg=/\s+$/g;//
   var str='asdga     ';//'asdga'
   str.replace(reg,'');//
   
   //匹配前面的空格,并去掉
   var reg=/^\s+|\s+$/;//
   var str='  asgd   asdg   ';
   str.replace(reg,'');//'asgd   asdg'
  • 取反-修饰作用
   ^用在区间中,则表示取反,比如
   /[^123]/;

小练习:

//1.写我,我们,你,你们,他,他们的正则,并将下面的这段话的对应的文字替换为*
var str='我们一起去旅游好吗?我带上你,你带上钱。我们可以一起坐火车,也可以坐汽车。我带上我爱吃的零食,你带上你爱看的漫画'
var reg=/[我你他们]/g;
str.replace(reg,'*');

//2.将以下段落中所有的QQ号找出来
var str="这是我的QQ:566666,说了的国家你说大概,你的QQ是:882423,马化腾的是10000";
//写正则
var reg=/[1-9]\d{4,9}/g;
 //执行(用那4个执法者)
str.match(reg);//['566666','882423','10000']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值