常见符号及其意义
符号 | 含义 |
. | 匹配除换行符 \n 之外的任何单个字符 |
\d | 匹配一个数字字符,等价于 [0-9] |
\D | 匹配一个非数字字符,等价于 [^0-9] |
\w | 匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_] |
\W | 匹配任何非单词字符。等价于 [^A-Za-z0-9_] |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v] |
\S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v] |
| | 逻辑“或”操作符,匹配左边的子表达式或右边的子表达式。例如,abc|def 可以匹配 "abc" 或 "def"。 |
[a-z] | 字符范围。匹配指定范围内的任意字符。例如,[a-z] 可以匹配任何小写字母 |
[^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如,[^a-z] 可以匹配任何非小写字母字符 |
[xyz] | 字符集合。匹配所包含的任意一个字符。例如,[abc] 可以匹配 "plain" 中的 'a' |
[^xyz] | 负值字符集合。匹配未包含的任意字符。例如,[^abc] 可以匹配 "plain" 中的 'p'、'l'、'i'、'n' |
{n} | n 是一个非负整数。匹配确定的 n 次。例如,o{2} 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的两个 o。 |
{n,} | n 是一个非负整数。至少匹配 n 次。例如,o{2,} 不能匹配 "Bob" 中的 "o",但能匹配 "foooood" 中的所有 o |
{n,m} | m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次。例如,o{1,3} 将匹配 "fooooood" 中的前三个 o |
^ | 匹配输入字符串的开始位置。如果使用了多行模式(re.MULTILINE),则匹配每一行的开始 |
$ | 匹配输入字符串的结束位置。如果使用了多行模式,则匹配每一行的结束 |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo" |
+ | 匹配前面的子表达式一次或多次。例如,zo+ 能匹配 "zo" 以及 "zoo",但不能匹配 "z" |
? | 匹配前面的子表达式零次或一次。例如,do(es)? 可以匹配 "do" 或 "does" |
(...) | 捕获组。将子匹配的结果保存起来以便后续引用或操作 |
\n | n 是一个非负整数。反向引用。表示第 n 个捕获组的匹配结果 |
(?:...) | 非捕获组。用于分组但不捕获匹配的结果 |
(?=...) | 正向预查。在任何匹配 ... 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用 |
(?!...) | 负向预查。在任何不匹配 ... 的字符串开始处匹配查找字符串。这是一个非获取匹配,该匹配不需要获取供以后使用 |
一、数字校验
- 数字:^[0-9]*$
- 匹配任意个数字(包括0个)。
- n位的数字:^\d{n}$
- 匹配恰好是n位的数字,其中n是一个具体的数字。
- 至少n位的数字:^\d{n,}$
- 匹配至少n位的数字。
- m到n位的数字:^\d{m,n}$
- 匹配m到n位的数字,包括m位和n位。
- 零和非零开头的数字:^(0|[1-9][0-9]*)$
- 匹配零或任何非零开头的数字序列。
- 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$
- 匹配非零开头的数字,最多带两位小数。
- 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$
- 匹配正数、负数或零,如果为小数则最多带两位小数。
- 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?
- 匹配任何正数、负数或小数。
二、字符校验
汉字:^[\u4e00-\u9fa5]{0,}$
- 匹配任意个汉字字符(包括0个)。
英文和数字:^[A-Za-z0-9]+$
- 匹配一个或多个英文字母(不区分大小写)或数字。
长度为3-20的所有字符:^.{3,20}$
- 匹配长度在3到20之间的任意字符序列。
由26个英文字母组成的字符串:^[A-Za-z]+$
- 匹配一个或多个英文字母(不区分大小写)。
由数字、26个英文字母或者下划线组成的字符串:^\w+$
- 匹配由数字、英文字母或下划线组成的字符串。
中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
- 匹配包含中文、英文、数字和下划线的字符串。
三、特殊需求校验
- Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
- 匹配标准的Email地址格式。
- 手机号码(以中国为例):^(13[0-9]|14[5|7]|15[0-9]|18[0-9])\d{8}$
- 匹配中国常见的手机号码格式。
- 代码示例
<body>
<style>
#phone{
background-color: #82d7ed;
outline: none;
border: 2px solid #1f91c6;
color: #101010;
text-align: center;
border-radius: 10px;
font-size: 16px;
padding: 10px;
width: 300px;
margin: 20px auto;
transition: all 0.5s ease-in-out;
}
</style>
<label for="phone">电话</label>
<input type="text" id="phone" placeholder="请输入电话号码">
<script>
document.getElementById('phone').addEventListener('keyup', function(event) {
// 检查是否按下了回车键
if (event.key === 'Enter') {
var phone = this.value;
var regex = /^(13[0-9]|14[57]|15[0-9]|18[0-9])\d{8}$/;
if (phone.length === 11 && regex.test(phone)) {
alert('电话号码格式正确');
} else {
alert('电话号码格式不正确,请确保是有效的手机号码格式且长度为11位');
}
}
});
</script>
</body>
- 身份证号码(15位或18位):^\d{15}|\d{18}$
- 匹配15位或18位的身份证号码。
- URL地址:[a-zA-z]+://[^\s]*
- 匹配简单的URL地址(不包括查询参数等复杂情况)。
- 日期格式(YYYY-MM-DD):^\d{4}-\d{1,2}-\d{1,2}$
- 匹配常见的日期格式,月份和日期可以是1到2位数字。
四、正则表达式匹配模式
正则表达式还支持多种匹配模式,如单行模式(Singleline)、多行模式(Multiline)和忽略大小写(IgnoreCase)等。这些模式可以通过正则表达式引擎的特定选项或直接在正则表达式中使用嵌入修饰符来设置。
单行模式:使.匹配包括换行符在内的任意字符。
多行模式:使^和$分别匹配每一行的行首和行尾,而不是整个字符串的开始和结束。
忽略大小写:在匹配过程中不区分大小写字符。