# REGEXP_MATCH

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

# 语法

REGEXP_MATCH(str, pattern)

# 示例

  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 连接

Java和JavaScript正则表达式的区别

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

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

# 复杂中国人名校验

复杂中国人名校验,包含生僻字,中文及少数民族姓名并排除中英文特殊符号、颜文字和emoji,demo地址:校验中国人名 (opens new window)

表达式示例

//比较广泛的中文汉字(\\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)

是否有帮助?
0条评论
评论