嘿,所以我正在寻找一个正则表达式模式:
- 一行中仅允许出现两个或一个
_
,但不能超过,可以结束开始并在其间添加_
- 最多 20 个字符,最少 3 个字符
- 仅允许连续出现一个句点,且不能以句点开始或结束
- 接受 A-Z 和 1-9
通过和失败的一些示例是:
.test #fail
_test #pass
_.test #pass
__test #pass
test_ #pass
te_.st #pass
te.st #pass
..test #fail
到目前为止我有 ^[\w](?!.*?\.{2})(?!.*?_{2})[\w.]{1,28}$
,除了检测单词之间和单词末尾的 __
之外,它适用于所有内容。任何帮助,将不胜感激!这已经让我的大脑受伤好几个小时了
最佳答案
Allows for only one period in a row and can't start or end in a period
从字符串开头开始对 ^\.
、\.$
和 \.\.
进行负向查找
Allows for only two or one _ in a row but no more, can end start and have the _ in between
从字符串开头对 __
进行负向查找
Max 20, min 3 characters
其他逻辑实现后,匹配并消耗3-20个允许的字符
^(?!.*___|\.|.*\.$|.*\.\.)[a-z1-9_.]{3,20}$
https://regex101.com/r/TUjY13/2
^
- 从字符串开头:(?!.*___|\.|.*\.$|.*\.\.)
- 确保匹配不:.*___
- 包含三个下划线\.
- 以.
开头
.*\.$
- 以.
结尾
.*\.\.
- 包含双句点
[a-z1-9_.]{3,20}
- 使用所有允许的字符匹配字符串正文中的 3-20 个字符(不区分大小写)
关于javascript - 需要帮助编写用户名正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64980370/