簡體   English   中英

包含0和4-9(4,5,6,7,8,9)的字符串的RegExp模式

[英]RegExp pattern for a String which contain 0 and 4-9(4 ,5,6,7,8,9)

我正在處理一個字符串。 用例是我不想要一個數字為4到9和0的數字的字符串。

例:-

ABC0123-> Not Valid.
XYZ002456789->Not Valid.
ABC123->Valid
ABC1->Valid

我嘗試過以下模式,但沒有成功。

String pattern = "^[0,4-9]+$"; 
if(str.matches(pattern)){
      //do something.
}

首先,從字符類中刪除逗號。 你不是在尋找逗號。

由於您不允許 ,請不要錨定表達式,允許匹配字符串中的任何位置。 實際上, matches為您錨定表達式,因此我們必須故意允許不允許的字符類之前和之后的字符:

String pattern = ".*[04-9].*";
if(str.matches(pattern)){
      // disallow
}

實例

或者,您可以通過使用Pattern.compile然后使用生成的Pattern而不是matches來避免使用那些.* ,因為它不會像matches那樣自動錨定模式。

匹配包含4-9和0的那些比匹配那些不包含的更容易。 所以你應該寫一個像這樣的正則表達式:

[4-90]

並調用find ,然后反轉結果:

if (!Pattern.compile("[4-90]").matcher(someString).find()) {
    // ...
}

另一種選擇可能是使用否定的字符類並添加您不想匹配的內容。 在這種情況下,你可以添加0和4-9的范圍,如果你不想匹配回車或換行,你也可以添加它們。

^[^04-9\\\\r\\\\n]+$

請注意,如果您將逗號添加到字符類中,則表示字面意思是逗號。

正則表達式演示 | Java演示

String pattern = "^[^04-9\\r\\n]+$";
if(str.matches(pattern)){
    //do something.
}

暫無
暫無

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

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