2014-01-21 109 views
0

嗨,我有兩個約束之一的地址和另一個評論。 地址我想只包括小和大寫字母,數字,空格,hypon,'。和逗號,併爲此我寫這些正則表達式模式。 的客戶端:final String regexp = "/^[a-zA-Z\\d\\s-',.]+$/"; 用於服務器端:final Pattern p = Pattern.compile("([a-zA-Z\\d\\s-',.])+");約束不起作用?

徵求意見的約束,我想,讓每一個角色除了^<>%*()#!? ,爲此我正則表達式格局研究是客戶端:

final String regexp = "/[^<>%*()#!?]+$/"; 

用於服務器端:

final Pattern p = Pattern.compile("/[^<>%*()#!?]+$/"); 

但它工作不正常地址沒有采取任何空間任何人都可以幫助

回答

2
服務器

側的正則表達式應該是

[a-zA-Z\\d\\s\\-',.]+ 

-用於指定範圍。如果只想在字符串中使用-,則將其作爲\\-

+0

沒有必要逃避角色類中的點。 – Toto

0

您必須逃避角色類中的破折號。沒有,範圍取自spacesingle quote(即:ascii 32到ascii 39)。

[a-zA-Z\\d\\s\\-',.] 

你也可以把破折號在開始時或在字符類的末尾:根據

[a-zA-Z\\d\\s',.-] 

[-a-zA-Z\\d\\s',.] 

更新評論:我想允許除<>%*()#!?

[^<>%*()#!?] 

,如果你想測試,如果它存在的串中的至少一個無效字符不需要錨,也沒有修改。

final Pattern p = Pattern.compile("/[^<>%*()#!?]/"); 
+0

和正則表達式patteren是什麼 - 我想允許除^ <>%*()#!以外的每個字符 – user2142786

+0

@ user2142786:查看我的更新。 – Toto

+0

在我的模式中,我使用^ [^ <>%*()#!?] + $如「doller」之前是「+」,這是錯誤的原因? – user2142786