javascript正则表达式之RegExp对象

js中正则表达式详解

为什么要学习正则表达式

很多人对正则表达式的概念就是“用的时候到网上查一个”就行了,我之前也一度这样认为,直到面试做笔试题的时候,看到一个邮箱验证,手写正则表达式,哇哦,只能空白跳过,
总结了一下,如果你是一个初级程序员,对于正则表达式模棱两可也OK的,但是如果你是一个高级程序员,你就要知其然,也要知其所以然,所以我决定把js中的RegExp对象彻底搞懂。

正式开始介绍正则表达式在js中的应用
1. 意义:

正则表达式是描述字符模式的对象;用于对字符模式匹配检索替换,是字符串执行模式匹配的强大工具。官方推荐使用正则来做匹配要比普通字符串匹配的效率要高。

2. 定义方式:

有两种定义方式,构造函数和直接赋值;

// 构造函数
let r1 = new RegExp(pattern, modifies)
// 直接赋值
let r2 = /pattern/modifies

pattern:模式
modifies:修饰符

3. 修饰符取值:
i:区分大小写
g:全局匹配
m:执行多行匹配
4.pattern语法
  • [] :用于查找某范围内的字符,其中使用^可以进行 非 匹配;
  • (red|blue|yellow): 用于精确字符串的或取值;
  • Metacharacter :
    在这里插入图片描述
    记忆方式:由小写切换成大写的一般为【非】的匹配
  • 量词
    量词
5.RegExp 对象方法

exec(str) 检索 str 的值 ,返回 位置 index
test(str) 检索str的值,返回boolean
toString()

6.RegExp对象属性

constructor 返回一个函数,该函数是一个创建 RegExp 对象的原型。
global 是否包含g 返回 boolean
ignoreCase 是否包含i 返回boolean
lastIndex 规定下一次匹配的初始位置
multiline 是否包含m 返回 boolean
source 匹配模式(即pattern的值)

7.使用举例
- 邮箱格式匹配
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i;

^: 开始标志;$: 结束标志;
[a-z]: a到z之间的一个小写字母字符;

[a-z0-9]: 匹配0个或者多个英文字母或者数字(即用户要么输入数字或者字母,要么不输入,但是不能输入其他格式);
[-_]?: 匹配0个或者1个[-_] ()
[a-z0-9]+
)* 匹配如果输入必须是前面的字符
@
([a-z0-9]
[-_]?[a-z0-9]+): 与前面同理
[\.]:对 . 语法进行转义,转义为.字符匹配
[a-z]{2,3}: 输入a-z之间的字符,数量限定为2-3个
([\.][a-z]{2})?:与前面同理
i:区分大小写

- 身份证号格式匹配
/(^\d{15}$)|(^\d{17}([0-9]|X)$)/g

15位或者18位带有X的

注:
^只有放在[]内部含义为非;

限定不能连续输入某些字符时,使用 ?语法 匹配;
限定要么不输入要么输入某些字符时,使用 *语法 匹配;
限定输入一次或者多次的时候,使用+匹配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值