regex - 如何制作合适的面膜?
问题描述
我正在检查“无效格式”的有效字符串。
字符串的最小长度为5 个字符,最大为32 ( /[a-z\d_\.]{5,32}/
)。
出现“无效格式”错误。如果字符串:
- 以三位或更多数字开头(可接受一位或两位数字);
- 它以字符开头和结尾
_
; - 包含一个点,其后以该字母开头的字符少于四个。
我写了一个适用于前两个条件的表达式,但我不明白如何实现第三个条件?如果可能的话,再举一个单独的表达式的例子,我不明白如何用点符号来做。
^(?!(?:_|\d{3,}))[a-z\d_\.]{5,32}(?<!_)$
https://regex101.com/r/W9njMe/1
谢谢。
解决方案
你可以使用这个正则表达式:
^(?!_|\d{3})(?!.*\.([^a-z]|.{4}))[a-z\d_.]{5,32}(?<!_)$
正则表达式详细信息:
^
: 开始(?!_|\d{3})
_
: 如果是第一个字符或开头有 3 个数字,则匹配失败(?!.*\.([^a-z]|.{4}))
: 如果点后面没有非字母或者点后面有 4 个字符,则匹配失败[a-z\d_.]{5,32}
: 匹配允许的字符 5 到 32 次(?<!_)
_
:如果是最后一个字符,则负向后看以使匹配失败$
: 结尾
推荐阅读
- node.js - React - 拒绝加载脚本 Google Analytics 和 Stripe 脚本
- electron - 如果您在电子应用中有 TFF,您是否需要 WOFF
- python - 为什么发生异常时我的 MQTT 客户端无法重新连接
- python - 生成没有相同元素相邻的排列
- java - 你如何不使用 MixIn 渲染丢弃的项目
- javascript - 无法分配给对象的只读属性
- java - 无法理解 Android Studio 上的 AnonymousClass5
- doxygen - Doxygen 不生成任何文档
- c# - 在 Arch linux 中从终端创建 dotnet(.Net) 项目时出错
- r - 为什么从因子变量的文档中强制这个因子变量会返回几个 NA?