JS中正则表达式初识

JS中的正则表达式

JS中,利用RegExp构造函数创造正则表达式

一般业务处理的过程:
  1. 验证合法性
  2. 业务处理
  3. 数据的传输
正则表达式的出现

验证合法性、减轻服务端压力

正则表达式对象的创建

1.构造函数

 - 第一个参数包括正则表达式的主体部分,即正则表达式直接量中两条斜线之间的文本
 - 第二个参数指定正则表达式的修饰符。只能传入i,m, g或者其组合,可以省略
var pattern =new RegExp("正则表达式","修饰符") 
var pattern =new RegExp("abc","ig");

2.正则表达式字面量

 var pattern = /正则表达式/修饰符; 
 var pattern = /abc/ig;      

修饰符(flags)与原型属性

修饰符
gglobal全局
iignore case不区分大小写
mmultiline多行
原型属性含义
RegExp.prototype.ignoreCase布尔值,表明这个正则表达式是否带有修饰符i
RegExp.prototype.multiline布尔值,表明这个正则表达式是否带有修饰符m
RegExp.prototype.lastIndex如果匹配模式带有g,这个属性存储在整个字符串中下 一次检索的开始位置,这个属性会被exec(), test()方法调用到
RegExp.prototype.source包含正则表达式文本

原型属性只有在构建的时候进行赋值,其他时候不能被修改,可利用getOwnPropertyDescriptor()查看属性是否可修改**

Object.getOwnPropertyDescriptor(result.__proto__, 'multiline');

访问器属性:是不给枚举到的,并没有提供set方法,所以不可以设置,但可以获得

不同场景下的正则表达式的应用
应用场景表达式含义
RegExpab*cb为0或多个
linuxab*cab任意多个字符然后c

原型方法

  • RegExp.prototype.test(str)
  • RegExp.prototype.exec(str)
  • RegExp.prototype.toString()
var result = pattern.test(str);

检测一个字符串是否匹配某个模式

  • 参数:字符串
  • 返回值:布尔类型 true代表有符合条件的,false代表没有符合条件的
var result = pattern.exec(str)

检索字符串中的正则表达式的匹配

  • 参数:字符串
  • 返回值:数组或null
  • 如果正则表达式中有修饰符“g”,这时,在pattern中会维护lastIndex属性,记录下一次开始的位置,当第二次执行exec的时候,从lastIndex开始检索
  • 如果正则表达式中没有修饰符“g”,不会维护lastIndex属性,每次执行从开始位置检索

正则表达式中的一些符号与含义

符号含义
.点号,小数点,匹配任意单个字符,换行符\n除外
*0或多次
+1或多次
0或1次
{n}连续出现n次
{n,}连续出现至少n次
{n,m}连续出现至少n次,至多m次
*?像*一样匹配,不过匹配是最小可能匹配
+?像+一样匹配,不过匹配是最小可能匹配
|
贪婪匹配重复字符时,尽可能多地匹配,例如{1,4} java(script)?
非贪婪匹配重复字符时,尽可能少地匹配,例如{1,4}?java(script)??

String对正则表达式的支持

search()
  • 参数为一个正则表达式。
  • 如果参数不为正则表达式,则先通过RegExp将其转换为构造函数。
  • 不支持全局检索,返回第一个与之匹配的子串的位置,如果找不到匹配的子串,返回-1。
  • 类似于正则表达式的 test 方法。
match()

最常用的正则表达式方法,参数为正则表达式。

返回由匹配结果组成的数组或者null。

当正则表达式中没有g修饰符的时候,就不是全局匹配。这时,数组的第一个元素就为匹配的字符串,剩余的元素则是由正则表达式中用圆括号括起来的子表达式。

如果该正则表达式设置为修饰符g, 则该方法返回的数组包含字符串中所有匹配结果。类似于正则表达式的 exec方法 ,不过不再需要循环遍历再封装了。

replace()
  • 用以执行检索和替换操作
  • 第一个参数是正则表达式,第二个参数是要替换的字符串
  • 返回替换后的字符串
text.replace(/javascript/gi,“JavaScript”);  //不区分大小写将所有javascript转换为JavaScript 
split()
  • 将字符串转为数组,对应想到Array中的join方法

  • 参数可以为正则表达式

    "1, 2, 3, 4, 5".split(/\s*,\s*/); //["1","2","3","4","5"] 允许分隔符左右两边留有空白
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值