什么是正则表达式?
其实正则表达式就是描述一类字符串的特征,通过这个特征与特定函数配合使用,对其他的字符串进行匹配、查找、替换、分割等操作的逻辑公式!
我们什么时候使用正则表达式呢?
在编程中,不是所有的字符操作都使用正则表达式,只有当我们遇到复杂字符串的时候,才会用到正则表达式。
正则表达式的语法规则
正则表达式秒素了一类字符串的特征,通过这个特征与特定的函数配合,对其他的字符串进行匹配、查找、替换以及分割操作!
这类字符串的特征是有一个或者多个
1.普通字符(比如a到z)、
2.元字符(有特殊功能的字符比如*、+、?),
正则表达式正是由普通字符和元字符组成的一个字符串,例如’/a/’,a就是普通字符,/是定界符(表示正则表达式的开始或结束)。下面是正则表达式语法参考表
| 字符 | 描述 | 示例 |
|---|---|---|
\ | 转义字符 | \. 匹配点号本身 |
^ | 匹配输入字符串的开始位置 | ^abc 匹配以”abc”开头的字符串 |
$ | 匹配输入字符串的结束位置 | xyz$ 匹配以”xyz”结尾的字符串 |
* | 匹配前面的子表达式零次或多次 | ab*c 匹配 “ac”、”abc”、”abbc” 等 |
+ | 匹配前面的子表达式一次或多次 | ab+c 匹配 “abc”、”abbc”,但不匹配 “ac” |
? | 匹配前面的子表达式零次或一次 | colou?r 匹配 “color” 和 “colour” |
{n} | 匹配确定的 n 次 | o{2} 匹配 “food” 中的两个 o,但不匹配 “Bob” 中的 o |
{n,m} | 最少匹配 n 次且最多匹配 m 次 | o{1,3} 匹配 “foooood” 中的前三个 o |
??, *?, +?, {n,m}? | 非贪婪匹配(最小匹配) | o+? 在 “oooo” 中只匹配第一个 o |
. | 匹配除换行符外的任何单个字符 | a.c 匹配 “abc”、”aac”、”a&c” 等 |
(pattern) | 匹配 pattern 并捕获匹配项 | (abc) 匹配并捕获 “abc” |
x\|y | 匹配 x 或 y | z\|food 匹配 “z” 或 “food” |
[xyz] | 字符集合,匹配所包含的任意一个字符 | [abc] 匹配 “plain” 中的 ‘a’ |
[^xyz] | 负值字符集合,匹配未包含的任意字符 | [^abc] 匹配 “plain” 中的 ‘p’、’l’、’i’、’n’ |
[a-z] | 字符范围,匹配指定范围内的任意字符 | [a-z] 匹配任意小写字母 |
[^a-z] | 负值字符范围,匹配不在指定范围内的字符 | [^a-z] 匹配任意非小写字母 |
\b | 匹配单词边界 | er\b 匹配 “never” 中的 ‘er’,但不匹配 “verb” 中的 ‘er’ |
\B | 匹配非单词边界 | er\B 匹配 “verb” 中的 ‘er’,但不匹配 “never” 中的 ‘er’ |
\d | 匹配数字字符,等价于 [0-9] | \d+ 匹配一个或多个数字 |
\D | 匹配非数字字符,等价于 [^0-9] | \D+ 匹配一个或多个非数字字符 |
\f | 匹配换页符 | |
\n | 匹配换行符 | |
\r | 匹配回车符 | |
\s | 匹配任何空白字符(空格、制表符、换页符等) | \s+ 匹配一个或多个空白字符 |
\S | 匹配任何非空白字符 | \S+ 匹配一个或多个非空白字符 |
\w | 匹配单词字符(字母、数字、下划线) | \w+ 匹配一个或多个单词字符 |
\W | 匹配非单词字符 | \W+ 匹配一个或多个非单词字符 |
中文正则验证
- 1.js
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff]
- 2.PHP
/^[\x{4e00}-\x{9fa5}]+$/u 其中”\x{4e00}-\x{9fa5}”代表汉字验证。”/u”代表unicode(utf-8)匹配。 在php中,不支持[\u4e00-\u9fa5]匹配汉字,而是用\x表示十六进制数据,然而php中用”[\x4e00-\x9fa5]“的写法也是错的,必须用{}把它包起来才行。此外,由于编码关系,需要用到”/u”声明编码格式.