正则表达式简记(一)—— 如何表达整数 & RegExp 的一些方法、string正则相关

本文介绍了JavaScript中正则表达式的基础知识,包括如何用正则表达式表示整数(^-?d+$),以及RegExp构造函数、常用的正则表达式标志(g、i、m、u、y)和方法如exec、test、search、match的用法,深入理解正则在字符串处理中的应用。
一、JS 》有关正则表达式

正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、replace、search 和 split 方法。

正则表达式如何表示整数?

/^-?\d+$/    //整数

解读:
^: 匹配输入的开始。如果多行标志被设置为true,那么也匹配换行符后紧跟的位置。
?: 匹配前面一个表达式0次或者1次。等价于 {0,1}。

如果紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪的(匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。

例如:对 “123abc” 应用 /\d+/ 将会返回 “123”,如果使用 /\d+?/,那么就只会匹配到 “1”。

\d: 匹配一个数字。等价于[0-9]。
+: 匹配前面一个表达式1次或者多次。等价于 {1,}。
$: 匹配输入的结束。如果多行标示被设置为true,那么也匹配换行符前的位置。

二、JS 》RegExp

RegExp 构造函数创建了一个正则表达式对象,用于将文本与一个模式匹配。

语法:字面量, 构造函数和工厂符号:

  1. /pattern/flags
  2. new RegExp(pattern [, flags])
  3. RegExp(pattern [, flags])

/ab+c/i;
new RegExp(‘ab+c’, ‘i’);
new RegExp(/ab+c/, ‘i’);

flags

如果指定,标志可以具有以下值的任意组合:
g
全局匹配;找到所有匹配,而不是在第一个匹配后停止
i
忽略大小写
m
多行; 将开始和结束字符(^和$)视为在多行上工作(也就是,分别匹配每一行的开始和结束(由 \n 或 \r 分割),而不只是只匹配整个输入字符串的最开始和最末尾处。
u
Unicode; 将模式视为Unicode序列点的序列
y
粘性匹配; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不尝试从任何后续的索引匹配)。

RegExp 的一些方法

在这里插入图片描述

exec()

exec() 方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。

语法: regexObj.exec(str)

  1. 如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的属性。返回的数组将完全匹配成功的文本作为第一项,将正则括号里匹配成功的作为数组填充到后面。
  2. 如果匹配失败,exec() 方法返回 null。

返回值:

test()

test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。

语法: regexObj.test(str)

返回值: 如果正则表达式与指定的字符串匹配 ,返回true;否则false。

三、JS 》string正则相关
search()

search() 方法执行正则表达式和 String 对象之间的一个搜索匹配。

语法: str.search(regexp)

如果传入一个非正则表达式对象 obj,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象。

返回值:
如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1。
在这里插入图片描述

match()

match() 方法检索返回一个字符串匹配正则表达式的的结果。

语法: str.match(regexp)
如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp 。如果你没有给出任何参数并直接使用match() 方法 ,你将会得到一 个包含空字符串的 Array :[""] 。

返回值:

  1. 如果使用g标志,则将返回与完整正则表达式匹配的所有结果(Array),但不会返回捕获组,或者未匹配 null。
  2. 如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性,或者未匹配 null。

附加属性

  1. groups: 一个捕获组数组 或 undefined(如果没有定义命名捕获组)。
  2. index: 匹配的结果的开始位置
  3. input: 搜索的字符串.

一个Array,其内容取决于global(g)标志的存在与否,如果未找到匹配则为null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值