簡體   English   中英

如何在正則表達式中不允許“。”(點)作為第一個字符

[英]How to disallow “.” (dot) as first character in regular expressions

我想創建一個正則表達式,以允許字符和數字的所有組合以及點的開頭,但不允許點。 因此有效的字符串可以是“ 1.2.3”或“ 1.b.34d”。 但我想禁止使用“。”之類的字符串。 或“ .1.2.3”。

我正在嘗試

[^.]{0,1}[ a-zA-Z_\\-\\.0-9]*

但這不起作用。 有人有更好的主意嗎?

您可以使用

s.matches("(?!\\.)[\\w\\s.-]*")

模式將匹配不以開頭的字符串. 由於負先行 (?!\\\\.)並包含零個或多個字字符(字母,數字或下划線- \\w ),空白字符( \\s. -符號。 請注意,由於String#matches()方法默認情況下會錨定模式,因此您不需要^ / \\A$ / \\z

注意 :要使此模式具有Unicode感知,請在模式的開頭添加(?U) (一個Pattern.UNICODE_CHARACTER_CLASS嵌入式標志選項): s.matches("(?U)(?!\\\\.)[\\\\w\\\\s.-]*")

使用負前瞻:

^(?!\\.)[\w .-]+$

\\w等效於[a-zA-Z0-9_]

請嘗試^[^\\.][ a-zA-Z_\\\\-\\\\.0-9]*

在正則表達式中,點字符表示“任何字符”。 要匹配垃圾,您需要逃避它。

^[^\\.][ a-zA-Z_\\-\\.0-9]*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM