# 常用正则表达式

> 表格在3.0版本之后引入了对文本列的格式检查，其中根据用户输入的正则表达式可以实现自定义限制格式。考虑到大多数师生对于正则表达式比较陌生，我们在这里会不定期更新一些遇到的可能需要的正则表达式。同时也欢迎加入QQ群：2343870，申请添加不在此处的正则表达式。

## 什么是正则表达式

正则表达式，简单来说，就是可以通过编写一种“公式”来匹配一段文字是否有对应格式的部分，而后可以进行查找、替换、提取等等操作。

[![图片来自 https://www.runoob.com/wp-content/uploads/2018/09/regexp-cn.png](https://doc.nju.edu.cn/uploads/images/gallery/2022-06/scaled-1680-/image-1654653491800.png)](https://doc.nju.edu.cn/uploads/images/gallery/2022-06/image-1654653491800.png)

表格中只是使用了最简单的匹配，如果你对正则表达式比较感兴趣，可以参考下列的资料：

中文：

+ <https://www.runoob.com/regexp/>

英文：

+ <https://regexr.com/>
+ <https://regex101.com/>
+ <https://www.regular-expressions.info/>

## 常用参考

这里我们会列出一些可能经常使用的正则表达式参考，直接复制粘贴即可使用。

### 学号/工资号或其他人员

人员编码标准可能会因为学校政策变动导致有些年份不一样，因此请以实际情况为准。可以参考[信息化建设管理服务中心](https://itsc.nju.edu.cn/xxgzzd/list.htm)的有关文件如《南京大学公共数据编码标准》。

#### 纯数字

纯数字的帐号例如本科生和部分教职工，以及未来可能统一的编码规范等。

最简单的纯数字检查：

```
^[0-9]+$
```

指定长度的纯数字检查：

```
^[0-9]{n}$
```

其中`n`替换为你需要的长度。

如果是一个范围（例如学号长度不同年份有变化），那就是：

```
^[0-9]{n,m}$
```

其中`n`和`m`替换为你需要的长度，表示长度为n\~m。

如果不设上限，

```
^[0-9]{n,}$
```

其中`n`替换为你需要的长度，表示长度为至少n。前面例子中的`+`其实和`{1,}`是等价的。

类似地，`*`和`{0,}`等价，`?`和`{0,1}`等价。

#### 含有大写字母

有很多早期的学号（比如研究生）和教职工是存在一些大写字母前缀的。

粗略的做法和上面类似，要求是“大写字母+数字”的格式：

```
^[A-Z]+[0-9]+$
```

当然你也可以进一步限制，例如只允许填写专硕学号：

```
^MF[0-9]+$
```

允许填写专硕、学硕的学号：

```
^(MF|MG)[0-9]+$
```

前面提到的限定数字长度可以一并使用。其他前缀也是类似的。

### 学术相关

#### DOI号

```
^10\.[0-9]{4}/\S+$
```