首页 > 解决方案 > 如何制作合适的面膜?

问题描述

我正在检查“无效格式”的有效字符串。

字符串的最小长度为5 个字符,最大为32 ( /[a-z\d_\.]{5,32}/)。

出现“无效格式”错误。如果字符串:

  1. 以三位或更多数字开头(可接受一位或两位数字);
  2. 它以字符开头和结尾_
  3. 包含一个点,其后以该字母开头的字符少于四个。

我写了一个适用于前两个条件的表达式,但我不明白如何实现第三个条件?如果可能的话,再举一个单独的表达式的例子,我不明白如何用点符号来做。

^(?!(?:_|\d{3,}))[a-z\d_\.]{5,32}(?<!_)$

https://regex101.com/r/W9njMe/1

谢谢。

标签: regexlogic

解决方案


你可以使用这个正则表达式:

^(?!_|\d{3})(?!.*\.([^a-z]|.{4}))[a-z\d_.]{5,32}(?<!_)$

正则表达式演示

正则表达式详细信息:

  • ^: 开始
  • (?!_|\d{3})_: 如果是第一个字符或开头有 3 个数字,则匹配失败
  • (?!.*\.([^a-z]|.{4})): 如果点后面没有非字母或者点后面有 4 个字符,则匹配失败
  • [a-z\d_.]{5,32}: 匹配允许的字符 5 到 32 次
  • (?<!_)_:如果是最后一个字符,则负向后看以使匹配失败
  • $: 结尾

推荐阅读