2015-05-02 28 views
1

我正在使用Deadbolt2play-framework 2.3.x。當我嘗試訪問控制器時使用正則表達式聲明deadbolt Patterns。我得到Not-found錯誤。 According to this sample,可以在我們的應用程序中使用帶有Pattern的正則表達式。但是當我聲明正則表達式時,我無法使用它。我的代碼如下所示:與Deadbolt 2:模式正則表達式不匹配的Playframework

def pattern_one = Pattern("CH{4,}", PatternType.REGEX, new MyDeadboltHandler) {} // NOT ACCESSED 

def pattern_one = Pattern("CH*", PatternType.REGEX, new MyDeadboltHandler) { // NOT ACCESSED 

def pattern_one = Pattern("CHANNEL", PatternType.REGEX, new MyDeadboltHandler) { // ACCESSED SUCCESSFULLY 
+0

你的意思是像「CH,{4,}」或「CH。*」這樣的模式嗎? (請注意我的表達式中額外的'.'。)爲什麼你想匹配類似'CHHHHHHHH'的東西?你在做化學應用嗎? –

+1

它可能是缺少正則表達式'CH。{4,}'和'CH。*'中的'.'嗎? –

+0

@GáborBakos它只是爲示例應用程序創建的,用於測試正常表達式如何與'deadbolt'一起工作。 –

回答

4

正則表達式不是通配符。如果*通配符任意次數匹配任何東西,在正則表達式,你需要使用.*,其中.手段任何字符,但換行符*意味着0次或更多次

更多,如果你想包含在開始CH串詞整個字符串匹配,您可以使用一個單詞邊界,\\b\\bCH.*

如果要指定字符串必須以CH開頭並匹配整個字符串,則可以使用^CH.*

2

您需要使用CH.*CH.{4,}如果你想CH後的東西(不僅僅是H S)。 .意味着任何字符,就像任何其他正則表達式一樣。

+0

這個答案已經由@格雷戈爾雷曼在上述評論 –

+1

這個答案已經通過我的上述評論給出給出:「'CH {4}'或'CH *'(注意額外的'.'。?我的表情。「)在他面前。 ;)(這是更詳細一點。) –

+0

對不起@加博貝克斯它的我的錯誤 –