鍍金池/ 問答/Java/ 求個正則,謝謝,只能包括小寫字母和下劃線,只能以字母開頭和結尾,且不能有兩個下劃

求個正則,謝謝,只能包括小寫字母和下劃線,只能以字母開頭和結尾,且不能有兩個下劃線聯(lián)系出現(xiàn)

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

而下列是不合法的
_a
b_
a__b

回答
編輯回答
妖妖

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

題主說明是javascript,是支持負向零寬斷言的(TAT)。上面的表達式沒法用。

建議分兩部分判斷:

  1. 第一部分判斷只包含小寫字母和下劃線和頭尾
    ^[a-z][a-z_]*[a-z]$
  2. 第二部分判斷兩個相連的下劃線
    str.indexOf("__") === -1

我剛才以為js支持負向斷言,是因為chrome的v8引擎自己實現(xiàn)了這個功能。。。

題外話,推薦正則表達式測試網站:regex101,可以直接在下面寫測試數據看匹配情況,記得flag選擇multiline支持多行數據。

ps.正則表達式相關的問題建議加上相應語言的標簽或者說明語言,因為有些語言的正則表達式實現(xiàn)是不同的。

2017年11月10日 22:43
編輯回答
放開她

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

可匹配

ab
wef
a_bsdafas
a_b_cdsfsdf

不可匹配

sdfads_dsafwe__dasfsd
_adsa
bdasfsd_ 
a__b

感覺能滿足需求

2018年5月9日 13:47
編輯回答
有你在

clipboard.png

2018年6月23日 07:32
編輯回答
傻丟丟

^[a-z]+(_[a-z]+)?$

2017年6月1日 06:38
編輯回答
舊時光
^[a-z]([a-z]|_[a-z])*$

圖片描述

2018年7月28日 10:43