我有一個正則表達式,允許字母數字,下劃線和點,但不連續點:正則表達式,不允許連續點
^(?!.*?[.]{2})[a-zA-Z0-9_.]+$
我還需要現在允許在字符串的第一個和最後一個字符點。
我該怎麼做?
我有一個正則表達式,允許字母數字,下劃線和點,但不連續點:正則表達式,不允許連續點
^(?!.*?[.]{2})[a-zA-Z0-9_.]+$
我還需要現在允許在字符串的第一個和最後一個字符點。
我該怎麼做?
你可以用另外的向前看符號像這樣使用它:
^(?!\.)(?!.*\.$)(?!.*?\.\.)[a-zA-Z0-9_.]+$
(?!\.)
- 不允許.
在啓動(?!.*?\.\.)
- 不允許連續2點(?!.*\.$)
- 唐不允許.
結束重新編寫的正則表達式爲
^[a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)*$
或者(如果您正則表達式的味道的ECMAScript標準的地方\w
= [a-zA-Z0-9_]
):
^\w+(?:\.\w+)*$
詳細:
^
- 串的開始[a-zA-Z0-9_]+
- 1或多個單詞字符(?:\.[a-zA-Z0-9_]+)*
- 零個或更多序列:
\.
- 點[a-zA-Z0-9_]+
- 1或多個單詞字符$
- 字符串末尾
只是想,這可以指出寫得像'^(?!\。)(?!。* \。$)(?!。*。\。\。)[\ w。] + $' – nozzleman
這樣短小。確實'\ w'是快捷方式''[[a-zA-Z0-9_]'在許多正則表達式中,但在awk,sed等中不支持。 – anubhava
@nozzleman:甚至更短:'^ \ w +(\。\ w +)* $'回答,但與一個捕獲組)。 –