2011-07-16 83 views
1

我最近asked for and received help關於Java的正則表達式,將匹配最多包含兩個星號,這可能是第一個或最後一個字符,或兩者的字符串需要進一步的幫助。這是我接受了答案:與Java正則表達式

^\\*?[^*]+\\*?$ 

當然,現在的需求發生了變化,我需要進一步約束字符串,它只能包含任何大寫或小寫字母,空格或星號通配符。不允許使用數字或標點(*除外)。如上所述,通配符定位的限制仍然存在。

所以這些字符串將匹配:

 
foo 
f oo 
*Foo 
FOO * 
*foo* 
*F o o* 

而且這些字符串不會:

 
* 
** 
**foo 
*f*oo 
1 
*1 
_ 
foo1* 
_foo 
%foo^ 

我已經花了年齡努力工作,這一點並沒有能夠,即使使用RegexBuddy。我真的不喜歡在堆棧溢出問這樣一個具體的問題,但我無法自己去解決這個問題。

在此先感謝。

回答

2

這應該工作:

^\\*?[a-zA-Z ]+\\*?$ 
+0

錯字。大寫'Z' –

+0

啊是的,謝謝 –

+0

謝謝,但似乎匹配下劃線由於某種原因。 –

1

如果正則表達式都必須Unicode字母匹配:^\*?[\p{L} ]+\*?$