2017-08-30 49 views
1

我正在編寫一個使用c#語言的Azure函數。現在我想生成一個包含一個(小寫,大寫,數字和給定特殊字符)的密碼。正則表達式在c#Azure函數中包含一個(小寫,大寫,數字,給定特殊字符)

我使用Fare在Azure的功能爲C#

Azure的功能: -

using Fare; 

var [email protected]"/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#[email protected]!%&*?])[A-Za-z\d#[email protected]!%&*?]{8,30}$/"; 

var xeger = new Xeger(regex); 
var result = xeger.Generate(); 
log.Info("result" + result); 

錯誤: -

2017-08-30T10:20:12.045 exceptionSystem.InvalidOperationException: state 
    at Fare.Xeger.Generate(StringBuilder builder, State state) 
    at Fare.Xeger.Generate() 
    at Submission#0.<Run>d__1.MoveNext() in D:\home\site\wwwroot\HttpTriggerCSharp1\run.csx:line 13 

2017-08-30T10:03:28.989 Exception while executing function: Functions.HttpTriggerCSharp1. Microsoft.Azure.WebJobs.Script: One or more errors occurred. Fare: state. 

錯誤線路上無13 VAR正則表達式= ...

請幫我解決這個問題。

+0

什麼類型的模式(針對正則表達式引擎)做Xeger接受?你的模式包含lookaheads,我認爲這些不支持。嘗試'var regex = @「^ [A-Za-z \ d#$ @!%&*?] {8,30} $」;',它是否按預期產生結果? –

+0

*發生一個或多個錯誤*那麼錯誤是什麼?異常是否有內部異常? – DavidG

+0

@DavidG我只看到一個或多個錯誤。 – karan

回答

2

來自[A-Za-z\d#[email protected]!%&*?]這個部分的例外來自於\d作爲例外的字符。如果您想匹配一個數字,只需將其更改爲0-9;例如:[A-Za-z0-9#[email protected]!%&*?]或將其移動到像[A-Za-z#[email protected]!%&*?\d]那樣結束。
但你複雜的正則表達式會在很長時間後產生;)。

Note: There are some rare results of using \d inside [..] ;).

你需要一個更好的正則表達式,我想可能是這樣的:

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[#[email protected]!%&*?]).{8,} 

說明:

(?=.*\d)   => there is at least one digit 
(?=.*[a-z])  => there is at least one lowercase character 
(?=.*[A-Z])  => there is at least one uppercase character 
(?=.*[#[email protected]!%&*?]) => there is at least one special character 
.{8,}    => length is 8 or more 
+0

我得到輸出爲5; 2 2侢실詼ಥ꣭갇㈶ਝ莂2༜쬚㻥7 <貒4 =熔銛ב6몴D今 퓡粢䲉lUᖚ== ijJꐈꞍp엹귿O괭v猙kX㙶ꁾujI졩䝮漂䤫j = Kꄢ疉YL = @ቻ曪ߍ℻艹Ꜽ – karan

+0

所以你的異常解決了! –

+0

是的。異常解決。我需要基於正則表達式的密碼字符串,但我得到了前面提到的無效字符。 – karan

相關問題