正则表达式
正则表达式
基本概念
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
使用
书写正则表达式后,可以利用JavaScript提供的test()
来判断某个字符串是否满足正则表达式,test
返回布尔型数据,true表示满足,false表示不满足。
需要注意的是,正则表达式是从左往右依次按照顺序来判断的。
var 正则表达式变量名 = /正则表达式语法/;
var 正则表达式变量名 = new RegExp("正则表达式", "正则表达式模式");
正则表达式变量名.test(待判断的字符串);
基础语法
[0-9]
:匹配一个数字。[a-z]
:匹配一个小写字母。[A-Z]
:匹配一个大写字母。[a-z0-9A-Z]
:匹配一个数字或字母。{m,n}
:匹配前一项的次数,至少m次,至多n次。 最多的话需是在匹配整个字符串的时候才有效。- 匹配5个数字:
[0-9]{5}
。 - 匹配至少5个数字:
[0-9]{5,}
。 - 匹配最多5个数字:
[0-9]{,5}
。 - 匹配最少2个数字,最多5个数字:
[0-9]{2,5}
。
- 匹配5个数字:
^
:表示从头开始匹配。- 匹配以数字/字母开头:
^[a-z0-9A-Z]
。
- 匹配以数字/字母开头:
$
:表示匹配以什么结束。- 匹配以数字/字母结束:
[a-z0-9A-Z]$
。
- 匹配以数字/字母结束:
^$
:表示匹配 是整个字符串。- 匹配18位数字:
^[0-9]{18}$
。
- 匹配18位数字:
(a|b|c)
:匹配abc中的中的一个字母,等同于[abc]。
(a|b)bc
:匹配abc 或bbc中的一种。James bond
:匹配James bond。
语法扩展
\d
:匹配一个数字,等同于[0-9]
。\w
:表示匹配一个单词字符(数字、字母、下划线),等同于[0-9a-zA-Z_]
。*
:匹配前一项出现的任意次数,即可有可无,等同于{0,}
。- 匹配任意数量的字母和数字:
[a-z0-9A-Z]*
。
- 匹配任意数量的字母和数字:
+
:匹配前一项的次数至少1次,等同于{1,}
。- 匹配至少1个数字:
\d+
。
- 匹配至少1个数字:
?
:匹配前一项的次数为0次或1次,等同于{0,1}
。- 匹配一个数字后可以跟一个字母或无:
\d[a-zA-Z]?
- 匹配一个数字后可以跟一个字母或无:
- 匹配
+
或?
或*
本身,需要进行转义,在符号前面加一个转义字符\
。- 匹配一个数字跟一个加号再跟一个数字:
[0-9]\+[0-9]
。
- 匹配一个数字跟一个加号再跟一个数字:
正则表达式模式
不同的正则表达式模式对于正则表达式有不同的作用,默认模式为u
。
常用模式:
u
:只匹配最近的一项i
:不考虑大小写g
:全局匹配
var 正则表达式变量名 = /正则表达式/模式;
正则表达式在字符串中的应用
字符串中的部分API是支持正则表达式:
match
:通过正则表达式以及全局模式能够获取字符串中所有符合条件的内容。split
:支持以正则表达式作为分隔符。replace
:支持以正则表达式进行替换。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库