# **REGEXP\_MATCH**

判断是否匹配正则表达式。完全不匹配才返回 *false* 。

## 语法{#grammar}

REGEXP\_MATCH(**str**, **pattern**)

- **str**：给定的字符串对象
- **pattern**：一个用于匹配字符串的正则表达式，正则表达式中的`\`需要连续输入2个，第一个`\`表示转义。[正则表达式的语法参考](https://www.runoob.com/regexp/regexp-intro.html)

**示例地址：** [REGEXP\_MATCH](https://demo.succbi.com/v5/bi/regexp_match)

## 示例{#example}

1. `REGEXP_MATCH("abc123","[0-9]")` 数字校验，返回`true`，匹配0到9中的一个字符
2. `REGEXP_MATCH("1234",'^-?\\d+$')` 整数校验，返回`true`
3. `REGEXP_MATCH("23","^[1-9]\d*$")` 正整数校验，返回`true`，首位不为0
4. `REGEXP_MATCH("Admin_123456","^[a-zA-Z]\\w{5,17}$")` 密码复杂度校验，返回`true`，只允许为数字、英文、下划线并以字母开头，长度为6-18
5. `REGEXP_MATCH("13598224932","^((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))\\d{8}$")` 手机号码校验，返回`true`，匹配手机号是否为`13*`、`15*`、`18*`的11位数字
6. `REGEXP_MATCH("210502198412020944","^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]")` 身份证校验，返回`true`
7. `REGEXP_MATCH("我是小明","明")` 汉字校验，返回`true`
8. `REGEXP_MATCH("xxxx@qq.con","[\\w]+(\.[\\w]+)*@[\\w]+(\.[\\w]?)")` 邮箱校验，返回`true`，匹配qq邮箱
9. `REGEXP_MATCH("420107","[1-8][1-7]\\d{4}")` 行政区划校验，返回`true`，匹配区划编码
10. `REGEXP_MATCH("https://www.baidu.com","^https?://.+?(com|cn|net).*?")` 网址校验，返回`true`，匹配http和https协议
11. `REGEXP_MATCH("AbCd","[A-Z]")` 英文字符，返回`true`
12. `REGEXP_MATCH("192.168.2.3","^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$")` ipv4地址校验，返回`true`
13. `REGEXP_MATCH([门店销售明细表].[销售日期],"20180414")` 引用模型字段，匹配日期

### 常用人名校验

1. `REGEXP_MATCH("小明",'^[\\u4e00-\\u9fa5]{2,4}$')` 常见中国人名校验，匹配2-4位中文人名
2. `REGEXP_MATCH("疗𦬅旺",'^((?![\\u3000-\\u303F])[\\u2E80-\\uFE4F]|·)*(?![\\u3000-\\u303F])[\\u2E80-\\uFE4F]$')` 中国人名（含生僻字）校验，排除中文句号逗号、书名号等汉字符号，并包含少数民族姓名
3. `REGEXP_MATCH("Tony Park",'^[A-Z][a-z]+\\s[A-Z][a-z]+$')` 标准英文人名校验（姓和名首字母大写）
4. `REGEXP_MATCH("疗𦬅旺",'^[A-Z][a-z]+\\s[A-Z][a-z]+$') OR REGEXP_MATCH("疗𦬅旺",'^((?![\\u3000-\\u303F])[\\u2E80-\\uFE4F]|·)*(?![\\u3000-\\u303F])[\\u2E80-\\uFE4F]$')` 中英文人名（含生僻字）校验，中英文分开校验用 OR 连接

::: tip Java和JavaScript正则表达式的区别
前后端正则匹配生僻字结果不一样，Java和JavaScript的正则匹配遇到代理对时处理逻辑不一样，大部分的校验都是前端JavaScript实现的校验，若遇到需要特殊处理下

- JavaScript会分开匹配每个code，无法写代理对的范围，可以绕开类似用`[\\u3000-\\u303F][\\u2E80-\\uFE4F]`来表示范围
- Java把属于一个字符的两个code作为整体匹配，并且只能通过代理对的范围匹配，类似于`[\\u3000\\u2E80-\\u303F\\uFE4F]`来表示范围
  :::

### 复杂中国人名校验

复杂中国人名校验，包含生僻字，中文及少数民族姓名并排除中英文特殊符号、颜文字和emoji，demo地址：[校验中国人名](https://demo.succbi.com/v5/demo-spg/%E6%A0%A1%E9%AA%8C%E4%B8%AD%E5%9B%BD%E4%BA%BA%E5%90%8D)

:::details 表达式示例
`//比较广泛的中文汉字（\\u2E80-\\uFE4F），包含生僻字和很多不需要的字符
(
    REGEXP_MATCH("张三",'^((?![\\u3000-\\u303F])[\\u2E80-\\uFE4F])*$')//常见人名含生僻字
OR 
   REGEXP_MATCH("张三",'^((?![\\u3000-\\u303F])[\\u2E80-\\uFE4F])+(·)((?![\\u3000-\\u303F])[\\u2E80-\\uFE4F])+$')//少数民族姓名含生僻字
)  
//排除CJK标点符号(\\u3000-\\u303F)
AND 
(
    REGEXP_MATCH("张三",'^((?![\\uFE30-\\uFE4F])[\\u2E80-\\uFE4F])*$')//常见人名含生僻字
OR 
    REGEXP_MATCH("张三",'^((?![\\uFE30-\\uFE4F])[\\u2E80-\\uFE4F])+(·)((?![\\uFE30-\\uFE4F])[\\u2E80-\\uFE4F])+$')//少数民族姓名含生僻字
) 
//排除CJK兼容符号（\\uFE30-\\uFE4F）包括竖排变体、下划线、顿号
AND 
(
 REGEXP_MATCH("张三",'^((?!([\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030))[\\u2E80-\\uFE4F])*$')//常见人名含生僻字 
OR 
    REGEXP_MATCH("张三",'^((?!([\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030))[\\u2E80-\\uFE4F])+(·)((?!([\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030))[\\u2E80-\\uFE4F])+$')//少数民族姓名含生僻字
)
//排除颜文字和emoji表情符号（[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF][\\u200D|\\uFE0F]|[\\uD83C|\\uD83D|\\uD83E][\\uDC00-\\uDFFF]|[0-9|*|#]\\uFE0F\\u20E3|[0-9|#]\\u20E3|[\\u203C-\\u3299]\\uFE0F\\u200D|[\\u203C-\\u3299]\\uFE0F|[\\u2122-\\u2B55]|\\u303D|[\\A9|\\AE]\\u3030|\\uA9|\\uAE|\\u3030）`
:::
