簡體   English   中英

正則表達式不尊重長度限制

[英]Regex doesn't respect the length limits

我在Java中使用以下正則表達式來匹配用戶名:

^(?!.*\\..*\\..*)[A-Za-z]([A-Za-z0-9.]*[A-Za-z0-9]){8,15}$

我希望這個正則表達式匹配包含所有字母數字字符的字符串(以字母開頭),中間允許最多一個句點(點),大小在8到15之間。

因此,它有兩個問題:

  1. 它不接受長度為8的字符串。它接受最小長度為9的字符串。
  2. 長度沒有上限。 它匹配任何超過8個字符的字符串。

為什么不考慮{8,15}

問題1 :您正在量化需要至少一個[A-Za-z0-9]且任何數量的[A-Za-z0-9.]之前的組。 因此已經需要至少8個字符。 另外你的正則表達式需要一個[A-Za-z]才能在此構造之前至少= 9個字符。

問題2 :你正在量化一個包含[A-Za-z0-9.]*任何數量的組,而這個{8,15}所以上限是15x(任何數量)=∞

猜猜你所看到的正則表達式看起來與此類似:

^(?![^.]*\\.[^.]*\\.)[A-Za-z](?:\\.?[A-Za-z0-9]){7,14}$

請參閱regex101上的演示和更多說明

暫無
暫無

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

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