2015-03-03 54 views
1

上驗證包含特定字符的文本的正則表達式我試圖創建一個正則表達式來驗證文本。條件如下:在條件

  1. 必須至少包含一個字母數字字符[A-ZA-Z0-9]

  2. 可以包含允許的特殊字符,如[@#]。這是可選的。

  3. 除了上述字符[包括@和#]之外,不允許其他字符。
  4. 文本長度應小於8

有效文本: A,A @,@A,A @一個@,@@@一個等

無效文本: @ ,@#,一個:**,A @%,AAAAAAAAA(9個字符)等等

我已經嘗試了以下的正則表達式,但它被部分地工作:?

(= [\ W])(?=。 [@#])?。* {0,8}

+0

嘗試regexr.com,它可以讓你嘗試不同的正則表達式在實時採樣文本和有一個方便的正則表達式的cheatsheet。 – Atuos 2015-03-03 09:31:02

回答

1
^(?=.*[a-zA-Z0-9])[[email protected]#]{0,8}$ 

嘗試this.See demo.

lookahead將確保至少有one字符。

+0

^(?=。* [a-zA-Z0-9])[A-Za-z0-9 @#] {1,7} $ < - 它應該少於8個字符,且至少包含1字母數字 – 2015-03-03 09:34:15

+2

@ SQL.injection前瞻將確保至少有一個字符 – vks 2015-03-03 09:34:49

+1

然後'{0,8}'是不必要的。 – 2015-03-03 09:35:16

0

matches方法中使用下面的正則表達式。

"(?=.*?[A-Za-z0-9])[[email protected]#]{1,8}" 

(?=.*?[A-Za-z0-9])斷言,字符串必須至少含有一個一個字母或數字,所以必須有存在於匹配的單個字符。這就是爲什麼我定義[[email protected]#]{1,8}代替[[email protected]#]{0,8}

String[] check = {"A", "[email protected]", "@A", "[email protected]@", "@@@a", "@", "@#", "a:**", "[email protected]%", "AAAAAAAAA"}; 
for(String i: check) 
{ 

    System.out.println(i.matches("(?=.*?[A-Za-z0-9])[[email protected]#]{1,8}")); 
} 

輸出:

true 
true 
true 
true 
true 
false 
false 
false 
false 
false 
0

您可以使用:

^(?=.*?[A-Za-z0-9])[@#A-Za-z0-9]{1,8}$ 
0

你可以嘗試的正則表達式是這樣的:

public static void main(String[] args) { 
    String s = "aaaaaaa"; 
    System.out.println(s.matches("(?=.*[A-Za-z0-9])[[email protected]#]{1,7}")); 
} 

O/P: 真正