如何验证字母之间的下划线:正则表达式

3

如何允许任意字母字符,下划线应该在它之间有一个字母和一个数字。

例如:ab2_sb,s_s,

但不应该允许sdc_或_s2

这是我的代码

[a-zA-Z0-9_]{6,255}$

我正在使用JavaScript的正则表达式

2个回答

5

您需要将字符长度检查与模式分开,并且如果未隐式添加,则不要忘记锚点:

^(?=.{6,255}$)[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*$

如果只能有一个下划线,请使用?量词将最后一个*替换。 细节
  • ^ - 字符串的开头
  • (?=.{6,255}$) - 长度检查,6到255个字符(不包括换行符)
  • [a-zA-Z0-9]+ - 1个或多个字母数字字符
  • (?:_[a-zA-Z0-9]+)* - 零次或多次出现:
    • _ - 下划线
    • [a-zA-Z0-9]+ - 1个或多个字母数字字符
  • $ - 字符串的结尾。

就是那个! - Bathsheba
1
非常感谢 @Wiktor。 - Christian

1
什么意思?
([a-zA-Z]+_?[a-zA-Z]+)*

这确保了无论何时出现下划线,它都必须被至少一个字符包围在两侧。

但您忘记了 {6,225} 的限制条件,这使得问题变得困难(也是我为什么点赞此问题的原因)。 - Bathsheba
非常感谢 @jackarms。 - Christian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接