[英]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.