gpt4 book ai didi

JavaScript:正则表达式 - 不能以标点符号开始/结束,没有重复的标点符号

转载 作者:行者123 更新时间:2023-12-02 05:41:06 25 4
gpt4 key购买 nike

我正在尝试创建一个正则表达式。规则是:

1) 只能包含字母(大写字母和小写字母)、数字、句点(.)和下划线(_)

2) 必须以字母或数字开头和结尾(即没有句点/下划线)

3) 不能连续使用任何类型的多个标点符号(没有 .. 或 ._ 或 _. 或 __ 或 .._. 等)

4) 必须包含至少 2 个字母(大写或小写或两者都无所谓)

5)不少于3个字符,不超过25个字符

到目前为止,我所拥有的是:

^((?!.*[\._]{2})[A-Za-z0-9\._]{3,25})$

这很接近。我有规则 1、3 和 5,但无法弄清楚规则 2 和 4。

我以为

(([A-Za-z0-9]?)([A-Za-z0-9\._]+)([A-Za-z0-9]?)){3,25}

会得到规则 2,但它只是打破了它。

我已经为此工作了几个小时,但我找不到或想出的解决方案都不是我正在寻找的。

非常感谢您提供对 Regex 语句的解释,但这并非完全必要。

编辑 1

根据菜鸟的建议:

^((?!.*[\._]{2})(([\w\d\.]+)){3,25})$

编辑 2

有效:

1rockit.man
q3w
e4.45r.d.2
sp_am

(以及 3 到 25 个字符之间的任何其他字符,没有前导或重复标点符号)

无效:

.ret.
123
12a
ret..wer
super_.duper
_petrat
petrat_

最佳答案

根据您的条件,我提出了以下正则表达式。这只是对您当前的正则表达式的修改。

正则表达式: ^(?=.*[A-Za-z].*[A-Za-z])([A-Za-z0-9](( ?!.*[\._]{2})([\w\d\.]{1,23}))[A-Za-z0-9])$

解释:

  • 第一部分 (?=.*[A-Za-z].*[A-Za-z]) 检查整个字符串是否有 任何东西 分隔的两个 字符(这里几乎就是这种情况)。

  • 我在字符串的开头和结尾添加了检查,字符串应该是字母数字

  • 除此之外,长度现在也会有所不同,因为会计算第一个和最后一个字符,其余长度将仅为 23 个字符

Regex101 Demo

关于JavaScript:正则表达式 - 不能以标点符号开始/结束,没有重复的标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35666425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com