我正在解決 Java 中的一個問題,需要創建一個正則表達式,它檢查字符串中的下一個規則:字符串只能包含數字、大小寫字母和下劃線字符"_";字符串不能以數字開頭;如果字符串以下劃線開頭,則第二個字符不能是下劃線,即必須是數字或字母;該字符串只能由一個字符組成,但該字符不能是下劃線;我不明白如何制作正則表達式的第一部分。我嘗試將其部分部分地制作:表達式"_[a-zA-Z0-9]"滿足條件“如果字符串以下劃線字符開頭,則第二個字符是字母或數字”。表達式"\\D"滿足條件“字符串不得以數字開頭”。表達式"[a-zA-Z]"滿足條件“字符串以大寫或小寫字母開頭”。表達式的最后一部分很簡單—— "w*"。當我嘗試將所有這些放在一起時"(_[a-zA-Z0-9])*|(\\D)*|([a-zA-Z])*w*",獲得的正則表達式無法正常工作。以下字符串b33不_n1適合我的正則表達式,但該字符串__適合它。如何修復我的正則表達式?
2 回答

慕妹3146593
TA貢獻1820條經驗 獲得超9個贊
盡管如此,我想提供一種僅部分使用正則表達式的替代方案。我經常也在網上搜索緊湊的正則表達式,并經常得到答案,但兩個月后我不知道該表達式的含義。
如果您不是像 Wiktor Stribi?ew 這樣的正則表達式天才,并且希望第一眼看到已驗證的內容,我建議您采用以下方法
static boolean check(String s){
if(s.matches("[a-zA-Z0-9_]+")){
if( !Character.isDigit(s.charAt(0))){
if(!s.startsWith("__")){
return !(s.length() == 1 && s.equals("_"));
}
}
}
return false;
}
添加回答
舉報
0/150
提交
取消