0

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

而下列是不合法的
_a
b_
a__b

Xeneizes 179
2017-12-20 提问

查看全部 5 个回答

1

已采纳

^[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.正则表达式相关的问题建议加上相应语言的标签或者说明语言,因为有些语言的正则表达式实现是不同的。

1
回复 Xeneizes

@Mr1997 的答案是对的,我想复杂了。你改成采纳他的答案吧。

drwx · 2017年12月21日

展开评论

推荐答案

2
^[a-z]([a-z]|_[a-z])*$

图片描述

推广链接