我正在嘗試創建一個正則表達式。的規則是:JavaScript:正則表達式 - 不能用標點符號開始/結束,不要重複標點符號
1)僅字母(上部和下部),數字,句點()和下劃線(_)
2)必須開始並以字母或數字(即,沒有周期/下劃線結束)
3)不能有多個標點符號一排,任何形式的(無..或._或_。或__或.._。等)
4)必須至少包含2個字母(無論上限還是下限,或兩者都無關緊要)
5)不少於3個字符,不超過25個字符字符
到目前爲止,我所擁有的是:
^((?!.*[\._]{2})[A-Za-z0-9\._]{3,25})$
,接近十歲上下。我有規則1,3和5,但想不通2和4
我認爲
(([A-Za-z0-9]?)([A-Za-z0-9\._]+)([A-Za-z0-9]?)){3,25}
將獲得規則2,但它只是打破它。
我一直在爲此工作了幾個小時,但沒有找到任何解決方案,或者可以提出的解決方案都是我所需要的。
對您提供的正則表達式的解釋將不勝感激,但並非完全必要。
EDIT 1
作爲每小白的建議:
^((?!.*[\._]{2})(([\w\d\.]+)){3,25})$
編輯2
有效:
1rockit.man
q3w
e4.45r.d.2
sp_am
(和任何3到25個字符之間的東西,而不會導致或重複標點符號)
無效:
.ret.
123
12a
ret..wer
super_.duper
_petrat
petrat_
使用'shorthand'像'\ w'和'\ D'運營商。更容易理解。 '\ w'也包含'_',這樣就可以覆蓋。 – 2016-02-27 06:17:33
您可能希望包含一些**有效**和**無效**匹配以進行快速測試。 – 2016-02-27 06:27:00
根據條件2,'1rockit.man'和'e4.45r.d.2' ** **無效**。_不能以非字母/數字_開始或結束。您可能想再次檢查給定的條件或示例。 – 2016-02-27 06:37:19