求个正则,谢谢,只能包括小写字母和下划线,只能以字母开头和结尾,且不能有两个下划线联系出现

下列字符串是合法的
ab
a_b
a_b_c

而下列是不合法的
_a
b_
a__b

阅读 2.5k
评论
    5 个回答
    drwx
    • 788

    ^[a-z]([a-z]|((?<!_)_))*[a-z]$

    题主说明是javascript,是支持负向零宽断言的(TAT)。上面的表达式没法用。

    建议分两部分判断:

    1. 第一部分判断只包含小写字母和下划线和头尾
      ^[a-z][a-z_]*[a-z]$
    2. 第二部分判断两个相连的下划线
      str.indexOf("__") === -1

    我刚才以为js支持负向断言,是因为chrome的v8引擎自己实现了这个功能。。。

    题外话,推荐正则表达式测试网站:regex101,可以直接在下面写测试数据看匹配情况,记得flag选择multiline支持多行数据。

    ps.正则表达式相关的问题建议加上相应语言的标签或者说明语言,因为有些语言的正则表达式实现是不同的。

    评论 赞赏