[英]Regex to allow one or two digits followed by commas (spaces are allowed too)
[英]Regex for commas and periods allowed
我嘗試搜索該問題的答案,還閱讀了Regex Wiki,但找不到確切的內容。
我有一個驗證文檔的程序。 (它是別人寫的)。
如果某些行或字符與正則表達式不匹配,則會生成錯誤。 我注意到,總是會產生一些錯誤的錯誤,我想更正此錯誤。 我相信我已將問題縮小為:
這是一個例子:
該錯誤由程序邏輯標記:
ERROR: File header immediate origin name is invalid: CITIBANK, N.A.
這是導致該錯誤的代碼:
if(strLine.substring(63,86).matches("[A-Z,a-z,0-9, ]+")){
}else{
JOptionPane.showMessageDialog(null, "ERROR: File header immediate origin name is invalid: "+strLine.substring(63,86));
errorFound=true;
fileHeaderErrorFound=true;
bw.write("ERROR: File header immediate origin name is invalid: "+strLine.substring(63,86));
bw.newLine();
我相信在運行時調用錯誤的原因是因為文本包含句點和逗號。.我不確定如何在正則表達式中允許它們。
我試過使用這個
if(strLine.substring(63,86).matches("[A-Z,a-z,0-9,,,. ]+")){
而且似乎可行,我只是想確保這是正確的方法,因為它看起來不正確。
您的分析正確,匹配失敗,因為字符類中沒有包含一個點。
但是,您可以簡化正則表達式-無需重復逗號,它們在類中沒有任何特殊含義:
if(strLine.substring(63,86).matches("[A-Za-z0-9,. ]+"))
您確定您將永遠不必匹配非ASCII字母或任何其他類型的標點符號嗎?
字母和數字:a-zA-Z0-9可以有效地由表示單詞的\\ w代替。 句號和逗號不需要轉義,可以原樣使用。 因此,此正則表達式可能派上用場:
"[\w,.]"
希望這可以幫助。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.