簡體   English   中英

嘗試排除逗號時,Java RegEx模式無效

[英]Java RegEx pattern is invalid when trying to exclude commas

我正在建立一個驗證用戶名的功能,在這種情況下,我只想接受字母字符。 我將提供的用戶輸入與此正則表達式進行匹配:

[1-9!@#$%&*()_+=|<>?{}\\[\\]~-,]

這是使用正則表達式的方法:

public static String purgeInvalidLogin(String failedLogin, String pattern) {
    Pattern special = Pattern.compile (pattern);
    String purgedLogin = failedLogin.replaceAll(special.pattern(), ""); // remove any special characters before moving on
    purgedLogin = StringUtils.deleteWhitespace(purgedLogin);
    return purgedLogin;
}

但是,當嘗試運行此消息時,出現以下消息:

索引25附近的字符范圍非法[!@#$%&*()_ + = | <>?{} []〜-,] ^

只有在我添加了逗號后才發生這種情況。 我也嘗試過[!@#$%&*()_ + = | <>?{} []〜-\\,](轉義逗號)的表達,但沒有用。 我想知道如何使用上述方法正確使用正則表達式來排除逗號。

提前致謝。

轉義連字符。 只要在其后添加另一個字符(逗號),它就被解釋為定義了一個字符范圍。

[1-9!@#$%&*()_+=|<>?{}\\[\\]~\\-,]

您只想接受字母字符,並通過列出所有可能的非法字符來做到這一點。 我認為您已經倒退了,最好尋找自己想要的東西(這將是一個短得多的正則表達式)並標記不匹配項。

暫無
暫無

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

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