簡體   English   中英

如何從正則表達式中的模式匹配中排除某些字符?

[英]How do I exclude certain characters from pattern matching in regex?

我正在嘗試實現我自己的 atoi 版本,因此我想檢查我的字符串是否包含非數字字符並處理錯誤,但我還希望搜索模式排除 + 和 - 符號(即 + 和 -只有在字符串的開頭是有效符號)。 我目前有word.matches("^[+=][a-zA-Z]+") ,但我不確定如何相應地更改它以滿足我的需要。 例如:20e48 無效,204-8 無效,+2048 有效,-2048 也是如此

干得好:

public static void main(String[] args) {
    String pattern = "^[+-]?[0-9]+$";
    System.out.println("20e48".matches(pattern));
    System.out.println("204-8".matches(pattern));
    System.out.println("+2048".matches(pattern));
    System.out.println("-2048".matches(pattern));
    System.out.println("2048".matches(pattern));
}

它打印:

false
false
true
true
true

解釋:

^ => Starts
[+-] => Either plus or minus sign
? => Zero or one occurance
[0-9] => Any number
+ => One or more occurance
$ => End

如果任何字符串與此模式不匹配,則它不是有效輸入。

嘗試 ^ 后跟您不想在方括號中匹配的字符。 例如 [^k] 將不匹配給定字符串中的 k 個字符。

這個正則表達式可能對你有用:

^[+-]{0,1}[0-9]*[^0-9]+[0-9]*$

它匹配(可選)以 + 或 - 開頭、后跟 0 個或多個數字字符、1 個或多個非數字字符、0 個或多個數字字符的任何字符串。

暫無
暫無

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

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