[英]Java regex db and special character
我從未記錄的 java 代碼繼承。 似乎我有一個數據庫,其中包含這樣的代碼 050.09.89 和 java 后端代碼中的正則表達式測試。
使用對應於數據庫表 getCode.matches() 的 object 現在我必須更改正則表達式以匹配兩種代碼 050.09.89 或 050/09/89 但是當它是 050/09/89 時我有 500 個內部錯誤,我認為這是由於數據庫只包含 050.09.89 類型的代碼。
問題來自正則表達式還是數據庫上下文? 以及如何在不更改數據庫的情況下解決問題? 此致
private void checkNotifyAllowed(Deployment deployment) {
if (!deployment.getCode().matches(regex:"[0-9]{3}\\/[0-9]{2}\\/[0-9]{2}$|[0-9]{3}\\.[0-9]{2}\\.[0-9]{2}$")){
throw new BusinessException("Invalid billing code, should be nnn.nn.nn or nnn/nn/nn");
}}
現在我必須更改正則表達式以匹配兩種代碼 050.09.89 或 050/09/89 但是當它是 050/09/89 時我有 500 個內部錯誤,我認為這是由於數據庫只包含 050.09.89 類型代碼。
您共享的代碼塊中的正則表達式實際上已經構建,因此它接受格式XXX/XX/XX
以及YYY.YY.YY
- pipe 字符|
中間將兩種可能性分開。 那里的\\
用於轉義特殊字符。 我認為/
根本不需要轉義,不像.
這是正則表達式中的特殊字符,必須進行轉義,以便匹配文字點字符而不是任何單個字符。 就像 Wiktor 建議的那樣:將\\/
替換為/
。
但是,500 內部錯誤也可能指向其他問題,因為/
也是一種特殊字符。 也許它混淆了 web 服務器,因為例如通過帶有/
字符的 GET 請求的輸入參數被視為子目錄訪問請求。 如果可能,請檢查有關此問題的 web 服務器日志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.