簡體   English   中英

驗證文本的正則表達式,其中包含某些特殊字符

[英]Regular expression of validating text which contains certain special characters on condition

我正在嘗試創建一個將驗證文本的正則表達式。 條件如下:

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

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

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

有效文本: A,A @,@ A,A @ a @,@@@ a等

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

我嘗試了以下正則表達式,但部分起作用:

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

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

試試看。看演示。

lookahead將確保至少有one字符。

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

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

(?=.*?[A-Za-z0-9])斷言字符串必須包含至少一個字母或數字,因此匹配項中必須存在單個字符。 這就是為什么我定義[A-Za-z0-9@#]{1,8}而不是[A-Za-z0-9@#]{0,8}

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

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

輸出:

true
true
true
true
true
false
false
false
false
false

您可以使用:

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

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

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

O / P:是

暫無
暫無

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

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