type
status
date
slug
summary
tags
category
icon
password
行的起始^
和结束$
问:如何找出所有的
cat
,而不是scat,vacation等...答:使用 ^ 和 $ 正则元字符来限制
字符组 []
问:如何匹配 gray 或 grey
答: [ea]表示匹配 e 或 a
问: 如何匹配 H1- H6的html标签
答:
排除型字符组 [^]
问:匹配除了1-6的数字
答:
- 这里的排除字符,是在字符组里面的
/[^ae]/
表示“除了ae” 和 之前表示范围的/^[ae]/
“以a或e开头” 的含义不同。
连字符只有在
[]
中才有含义。/[1-9a-zA-Z]/
表示所有数字和字母,/1-6/
这里的连字符只是普通字符。
占位符点 .
问:如何匹配01.02.03,01-02-03,01/02/03
答:
- 用
.
来表示任意字符,这种可能还会匹配到01*02*03,01 023034等,类似形式
- 用
[-./]
来匹配当前存在的字符,更准确。只能匹配以上三种。这里要注意的是[-./]
,如果[.-/]
(错误写法)点在元字符的最前面,.
匹配的是任意字符。而[-./]
就匹配的是一个普通的.
- 元字符在字符组的最前面才有意义。如
[^123]
表示:除了123的其他字符;[.123]
表示:任意字符+123
- [123^123],[123.123] 中间的
^
和.
没有任何元字符的意义,只是平时用的普通字符。
- 具体如何使用还需要看自己的需求。
多选结构 或 |
问:如何匹配 gray 或 grey
答:
- 为什么不能
/gr[a|e]y/
(错误写法)正则中在()
里面使用|
是有意义的表示"或"
,在[]
使用只是一个普通字符。
(|)
与[]
区别:多选结构(|)
可以匹配多个字符,而[]
只能匹配单个字符。
问:如何同时匹配
First Street
和 1st street
答:以下两种写法等价
问:
/^From|Subject|Date:/
与 /^(From|Subject|Date):/
的区别?- 第一个匹配
^From
Subject
Date:
- 第二个匹配
^From:
^Subject:
^Date:
以这三个单词为行起始位置匹配
忽略大小写 i
问:如何匹配
DATE
和 date
答:
单词分界符 \b
问:如何找出所有的
cat
,而不是scat,vacation等...答:
- 类似于单词自己的起始
^
结束$
- 数字的小数点前后,都可以使用分界符
量词
可选项 ?
问:如何匹配 color 和 colour
答:
?
代表 u 可以出现,也可以不出现,表示出现0次到1次问:如何匹配
July fourth
表示7月可能:July
Jul
表示4可能有:fourth
4th
4
答:
- 配合
()
界定多个字符
通配符
问:如何匹配所有以
.txt
为结尾的文件答:
*
表示出现0次到任意多次重复出现 +
问:如何匹配 H1- H6的html标签
答:
属于量词的一种,用来表示0到无数次
- 空格在正则表达式中也是一个普通字符。和123456没什么区别
问:如何匹配
<HR SIZE=14>
和 <HR>
答:
+
表示必须要出现一次,HR
后面的空格是必须要有的所以需要用+
,等号后面的数字是必须要有的所以[0-9]+
,字符组可以不用加()
直接使用+
作用于整个字符组。
?
表示当前部分出现0次或者1次。也就是说可能有SIZE=14
也有可能没有。
区间 {}
问:匹配出1到5个任意数字
三种量词总结
ㅤ | 次数下限 | 次数上限 | 用区间表示 |
? | 无 | 1 | {0,1} |
* | 无 | 无 | {0,} |
+ | 1 | 无 | {1,} |
反向引用 \1
问:如何匹配前后重复的单词,匹配如
the the
,而不匹配the theory
答:
- 单词分界
\b
是用来限制不匹配the theory
的情况
()
是用来标识,\1
反向引用的范围
\1
代表和([A-Za-z]+)
匹配一致的内容,如果有多个括号可以继续使用\2
\3
,如:/([a-z])([0-9]+)\1\2/
转义\
问:如何匹配
www.baidu.com
答:
- 因为
.
在正则中是有意义的,表示任意字符。所以如果想在正则中表示一个普通的.
,需要在前面添加\.
进行转义。这样正则就会认为这只是一个普通的.
[\.]
错误写法,转义符在字符组中没有任何意义。
- 如果
\
后面放的不是元字符,如\1
那么它就是正则的一个语法,代表反向引用
一些小练习
变量名
问:如何匹配变量名,包含数字字母及下划线,但是不能以数字开头
答:
引号内的字符串
问:如何匹配引号内的字符串。如:
"字符串"
答:
[^"]
字符组中匹配为非字符串的内容。美元
问:如何匹配美元金额
答:
小时
问:如何匹配
9:17 am
或者 12:30 pm
12小时制答:
问:匹配24小时制
答:
- 作者:yingwinwin
- 链接:https://yingwinwin.top/article/2dcf47d9-261d-43b2-ba99-a638c6368f3a
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章