正则表达式

为什么使用正则表达式

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。主要有以下几种使用场景:

  • 测试字符串内的模式
    例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
  • 替换文本
    可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
  • 基于模式匹配从字符串中提取子字符串
    可以查找文档内或输入域内特定的文本。

正则表达式元字符和特性

语法
var patt=/pattern/modifiers;

pattern(模式) 描述了表达式的模式
modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配

修饰符

i:执行对大小写不敏感的匹配
g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m:执行多行匹配

字符匹配

普通字符:普通字符按照字面意义进行匹配,例如匹配字母 "a"将匹配到文本中的 "a" 字符。
元字符:元字符具有特殊的含义,例如 \d 匹配任意数字字符,\w 匹配任意字母数字字符,. 匹配任意字符(除了换行符)等。

量词

*:匹配前面的模式零次或多次。
+:匹配前面的模式一次或多次。
?:匹配前面的模式零次或一次。
{n}:匹配前面的模式恰好 n 次。
{n,}:匹配前面的模式至少 n 次。
{n,m}:匹配前面的模式至少 n 次且不超过 m 次。

字符类

[ ]:匹配括号内的任意一个字符。例如,[abc] 匹配字符 "a""b""c"
[^ ]:匹配除了括号内的字符以外的任意一个字符。例如,[^abc]匹配除了字符 "a""b""c" 以外的任意字符。
\w:匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
\d:匹配任意一个阿拉伯数字(0 到 9)。等价于 [0-9]
[\s\S]:匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。
\n:匹配一个换行符
\r:匹配一个回车符
边界匹配
^:匹配字符串的开头。
$:匹配字符串的结尾。
\b:匹配单词边界。
\B:匹配非单词边界。
分组和捕获
( ):用于分组和捕获子表达式。
(?: ):用于分组但不捕获子表达式。
特殊字符
\:转义字符,用于匹配特殊字符本身。
.:匹配除换行符(\n\r)之外的任何单个字符,相等于 [^\n\r]。。
|:用于指定多个模式的选择。

RegExp 对象方法

exec

检索字符串中指定的值。返回找到的值,并确定其位置。未匹配到返回null

const str = '123456abc123'
const reg = /abc/
reg.exec(str)	// => 未匹配到返回null,有匹配结果则返回的是一个数组,包含匹配值、索引、原始字符串等信息

在这里插入图片描述

test

检索字符串中指定的值。返回 truefalse

const str = '123456abc123'
const reg = /abc/
reg.test(str)	// => true

支持正则表达式的 String 对象的方法

search

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
如果没有找到任何匹配的子串,则返回 -1,匹配到则返回位置索引。

// 语法:string.search(searchvalue)
// searchvalue可以是正则表达式,也可以是字符串
const str = '123456abc123'
const reg = /abc/
str.search(reg)	// => 6
match

match() 找到一个或多个正则表达式的匹配。如果没有匹配结果,则返回null。

// 语法:string.match(searchvalue)
// searchvalue可以是正则表达式,也可以是字符串。当regexp是一个字符串时,会被隐式地转换成正则表达式对象
const str = '123456abc123'
const reg = /123/g
str.match(reg)	// => ['123', '123'] 
str.match(/qqq/g)	// => null,没有匹配到返回null 
replace

replace 替换与正则表达式匹配的子串

const str = '123456abc123'
str.replace(/2/g, '')	// => 13456abc13
  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值