我有一個正則表達式^[\\p{L}\\d._]*\\p{L}+[\\p{L}\\d._]*$
這工作得很好限制_末的正則表達式
ABC123de
(字母 - 不論案件)ABCDEfgh
(只有字母 - 不管的情況)Abc_.123
(只允許特殊字符_
和.
)
然而,可以接受的輸入像
balaji_,jacob_
(具有_
在端部)2balaji,2jacob
(開始用數字)
我們可以修改上述正則表達式來限制上述兩測試用例?
我有一個正則表達式^[\\p{L}\\d._]*\\p{L}+[\\p{L}\\d._]*$
這工作得很好限制_末的正則表達式
ABC123de
(字母 - 不論案件)ABCDEfgh
(只有字母 - 不管的情況)Abc_.123
(只允許特殊字符_
和.
)然而,可以接受的輸入像
balaji_,jacob_
(具有_
在端部)2balaji,2jacob
(開始用數字)我們可以修改上述正則表達式來限制上述兩測試用例?
當然,添加適當的限制的開頭和結尾是這樣的:
^\p{L}[\p{L}\d._]*\p{L}+[\p{L}\d._]*[\p{L}\d.]$
這樣做的第一個peice的:
^[\p{L}\d._]*\p{L}+[\p{L}\d._]*$
具有*
允許零或更多,首先要解決問題#2更改爲+
:一個或多個:
^[\p{L}\d._]+\p{L}+[\p{L}\d._]*$.
爲了防止下劃線在年底需要一個條款不包括_
:
^[\p{L}\d._]+\p{L}+[\p{L}\d._]*[\p{L}\d.]?$.
但這仍允許_
單獨(從第一部分匹配單獨)。如果你不想要一個唯一的下劃線只是從第一條刪除:
^[\p{L}\d.]+\p{L}+[\p{L}\d._]*[\p{L}\d.]?$.
如果需要,開始使用下劃線的能力,我認爲我們需要有關允許的情況下的單,雙字符串的更多信息。
請親自學習正則表達式。你一直在問這個正則表達式太多次了。 – nhahtdh 2012-07-20 10:16:37
[此工具](http://gskinner.com/RegExr/)將幫助您。 – Leri 2012-07-20 10:17:38
請參閱我的答案的最後一句:您需要更好地定義允許的內容。按照定義「'_.'」,「'.1'」和「'_1」「是允許的:這是正確的嗎?建議:正面定義(即允許的內容):長度,開始字符,結束字符和其他(中間)字符。 – Richard 2012-07-20 10:51:07