Regex用于检测带句点的填充字符长度
我正在尝试构建一些正则表达式,当有人试图用圆点“填充”他们的用户名时,它会检测到 还有一些其他要求:Regex用于检测带句点的填充字符长度,regex,Regex,我正在尝试构建一些正则表达式,当有人试图用圆点“填充”他们的用户名时,它会检测到 还有一些其他要求: 用户名必须仅包含字母、数字和点 用户名必须以字母或数字开头和结尾 但不超过一个连续点 至少6个字符(字母和数字) e、 g: a、 b.c.d.e.6是允许的(未捕获),因为它有6个字符 a、 b.c.d.5没有(被捕获),因为它没有必备的6个字符 我构建正则表达式的方法是,如果存在匹配项,它将拒绝允许的用户名 到目前为止,我得到的是: /[^a-z0-9.]|^\.|\.$|\.{2,
- 用户名必须仅包含字母、数字和点
- 用户名必须以字母或数字开头和结尾
- 但不超过一个连续点
- 至少6个字符(字母和数字)
- a、 b.c.d.e.6是允许的(未捕获),因为它有6个字符
- a、 b.c.d.5没有(被捕获),因为它没有必备的6个字符
/[^a-z0-9.]|^\.|\.$|\.{2,}|\S{31,}|^\S{0,5}$/i
这抓住了:
- 任何不是字母、数字、点的字符
- 不能从一个点开始
- 不能以点结尾
- 不能有两个或多个连续点
- 不能有31个或更多字符
- 不能有5个或更少的字符
(\.{1}[a-z0-9]{1,}){1,3}\S{1,}$
问题是它还捕获123.456(应该允许/不捕获)
它应该捕获的字符串的其他示例:
- asdf.g
- a、 sdfg
- a、 sdf.g
- as.df.g
我试图只使用正则表达式来实现这一点,而不必使用JS预先格式化它。好的,经过多次实验,我终于找到了答案。事实证明,查找不允许的字符串实际上更容易(无论如何对我来说): 同一表达式展开:
/^\w\.?\w\.?\w\.?\w\.?\w$/
这将捕获任何只填充了5个或更少字符且散布有点的内容
我使用的完整正则表达式还捕获:
- 31个或更多字符的字符串(字母数字和句点)
- 非字母数字和句点的任何字符
- 任何以句点开头的字符串
- 任何以句点结尾的字符串
- 具有两个或多个连续句点的任何字符串
- 列表中的新成员:任何包含8个或更多数字且不包含任何字母的字符串
/^(\w\.?){4}\w$|^\w{0,5}$|\w{31,}|[^a-z0-9.]|^\.|\.$|\.{2,}|\d{8,}/i
而且它有效!(耶)
.length
属性是否足够?它应该使表达式不那么复杂。尝试在\.\.
上匹配有什么问题吗?使用匹配的正则表达式并检查不匹配:?regex101.com上的正则表达式:我不确定您的反向要求是否合适,请查看结果:@npinti,谢谢,但我正在尽可能多地使用正则表达式。
/^(\w\.?){4}\w$|^\w{0,5}$|\w{31,}|[^a-z0-9.]|^\.|\.$|\.{2,}|\d{8,}/i