javascript - 需要帮助编写用户名正则表达式

标签 javascript regex

嘿,所以我正在寻找一个正则表达式模式:

  • 一行中仅允许出现两个或一个 _,但不能超过,可以结束开始并在其间添加 _
  • 最多 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/

相关文章:

javascript 或 htaccess 重写 url

php - 如何使用 preg_match 验证无字符/.%\@?在输入字段中,只有 A-Za-z0-9./在另一个输入字段中

php - 优化以下 PHP 代码的最佳方法?

javascript - 如何用Spark读取Client发送过来的数据?

python - Django 过滤器不排除否定前瞻正则表达式的结果

Python 正则表达式 : I want to remove newlines after every '%}' tag close except for content in between {% verbatim%} . .. {% endverbatim %} 标签

javascript - 我应该使用 Xpath 还是 regexp 来实现此目的?

javascript - Youtube iframe 不响应 postMessage 命令

javascript - 使用 Plotly.update() 更新轨迹的 ‘x’ 和 ‘y’ 值

javascript - javascript中的继承模式