正则表达式
[#](https://tobe*.+?)
常见语法:
正则表达式是用于匹配和操作字符串的强大工具,以下是一些常用的正则表达式方法和用法:
- 字面量匹配: 最基本的正则表达式是直接匹配字面量字符串。例如,正则表达式
/hello/
将匹配字符串中的 "hello"。 - 字符类: 使用字符类来匹配特定范围的字符。
[abc]
:匹配 "a"、"b" 或 "c" 中的任何一个字符。[0-9]
:匹配任意数字字符。[^a-z]
:匹配除了小写字母以外的任意字符。
- 元字符: 元字符在正则表达式中具有特殊意义,需要使用转义符号
\
进行转义。.
:匹配除换行符外的任意单个字符。\d
:匹配任意数字字符。\w
:匹配任意字母、数字或下划线字符。\s
:匹配任意空白字符。
- 重复限定符: 用于指定匹配字符的重复次数。
*
:匹配前一个字符零次或多次。+
:匹配前一个字符一次或多次。?
:匹配前一个字符零次或一次。{n}
:匹配前一个字符恰好 n 次。{n,}
:匹配前一个字符至少 n 次。{n,m}
:匹配前一个字符至少 n 次,但不超过 m 次。
- 边界匹配: 用于限定匹配的边界。
^
:匹配行的开头。$
:匹配行的结尾。\b
:匹配单词边界。\B
:匹配非单词边界。
- 分组和捕获: 使用括号来创建分组,以及在匹配时捕获分组中的内容。
(pattern)
:创建一个捕获组。(?:pattern)
:创建一个非捕获组。
- 选择器: 使用竖线
|
来进行多个模式的选择匹配。cat|dog
:匹配 "cat" 或 "dog"。
- 反向引用: 使用反斜杠和数字来引用先前捕获的分组内容。
\1
:引用第一个捕获的分组内容。
- 零宽断言: 用于查找在某些位置前面或后面的模式,但不包括这些位置本身。
(?=pattern)
:正向肯定先行断言。(?<=pattern)
:正向肯定后发断言。(?!pattern)
:正向否定先行断言。(?<!pattern)
:正向否定后发断言。
- 修饰符: 用于对整个正则表达式进行修饰,影响匹配的行为。
i
:不区分大小写匹配。g
:全局匹配,找到所有匹配项。m
:多行匹配,考虑换行符。
这只是正则表达式的基础,正则表达式语法非常丰富,可以实现更复杂的模式匹配和替换。学习正则表达式需要不断的练习和实践。你可以使用在线的正则表达式测试工具来尝试不同的正则表达式,如Regex101、RegExr等。
匹配中国手机号:
这个正则表达式是用来匹配中国大陆的手机号码格式的。它的具体匹配规则如下:
^(\+86)?0?1([3-57-9]\d|6[1-79])\d{8}$
1
2
2
解释每个部分的含义:
^
:匹配字符串的开头。(\+86)?
:这是一个可选的分组,用来匹配可能的国际号码前缀 "+86"(中国的国际区号)。0?
:这是另一个可选的分组,匹配可能的 "0" 前缀,通常是用于拨打长途电话的。1
:匹配手机号码的第一个数字必须是 "1"。([3-57-9]\d|6[1-79])
:这是一个分组,匹配手机号码的第二位数字。它有两个部分:[3-57-9]\d
:匹配 3、4、5、7、8、9 中的任意一个数字,后面跟一个任意数字\d
。6[1-79]
:匹配以 6 开头,后面是 1、2、3、4、5、7、8、9 中的任意一个数字。
\d{8}
:匹配后面的 8 个数字,组成手机号码的主体部分。$
:匹配字符串的结尾。
因此,这个正则表达式匹配的是中国大陆的手机号码,包括常见的手机号段(例如:130、138、159 等),并且可以选择匹配前面的 "+86" 和 "0" 前缀,但不包括其他的字符。
这个正则表达式用于从URL参数中匹配含有特定格式的 token
的字符串。具体解释如下:
(\?|\&)token=.*([0-z]+)\/
1
2
2
(\?|\&)
:这是一个分组,匹配一个问号?
或者一个和号&
。这是用来匹配参数的开始,因为 URL 参数可以在问号?
或者其他参数之间使用和号&
进行分隔。token=
:这是字面量,匹配字符串 "token="。.*
:匹配零个或多个任意字符。这里用来匹配token=
后面的值部分。([0-z]+)
:这是一个分组,匹配至少一个连续的字母(大小写不限)或数字字符。\/
:匹配斜杠字符/
。这是用来确保token
后面的值在匹配结束后以斜杠结尾,可能是为了更准确地捕获需要的内容。
综合起来,这个正则表达式用来从 URL 参数中找到类似 token=...
格式的部分,并从中捕获 token
后面的值,该值至少包含一个字母(大小写不限)或数字字符,并以斜杠结尾。请注意,这个正则表达式中有一个小问题,[0-z]
这个字符范围超出了有效的 ASCII 范围,应该是 [0-9a-zA-Z]
才正确,以匹配大小写字母和数字。
编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19