簡體   English   中英

正則表達式允許使用逗號和句點

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

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