2017-08-30 12 views
1

C#言語のAzure関数を記述しています。今、私は1つ(小文字、大文字、数字と特定の特殊文字を含む)を含むパスワードを生成したい。C#Azure関数に1つの小文字(大文字、数字、特殊文字を含む)を含める正規表現

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); 

エラー: - - :私はC#

Azureの機能のためにAzureの機能でFareを使用しています

なし13ライン上

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. 

エラー= VARの正規表現です...

これを解決するために親切にお手伝いします。

+0

Xegerを何(正規表現エンジンのための)パターンの種類

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

あなたの必要性のためのより良い正規表現、私はこのようなものになることができると思います受け入れますか?あなたのパターンには先読みが含まれていますが、これらはサポートされていないと思います。 'var regex = @"^[A-Za-z \ d#$ @!%&*?] {8,30} $ ";'を試してください。 –

+0

* 1つ以上のエラーが発生しました*エラーは何でしたか?例外には内部例外がありますか? – DavidG

+0

@DavidG 1つ以上のエラーのみが表示されます。 – karan

答えて

2

[A-Za-z\d#[email protected]!%&*?]の例外は、\dメイク例外の後の文字です。数字を一致させたい場合は0-9に変更してください。 [A-Za-z0-9#[email protected]!%&*?]のようにするか、[A-Za-z#[email protected]!%&*?\d]のように最後に移動します。
しかし、あなたの複雑な正規表現は長い時間が経ちます。

(?=.*\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༜쬚㻥7貒4 =熔铦ב6몴D今 퓡粢䲉lUᖚ== ijJꐈꞍp엹귿O괭v猙kX㙶ꁾ宇治졩䝮漂䤫J = Kꄢ疉YL = @ቻ曪ߍ℻艹Ꜽ – karan

+0

だからあなたの例外を解決! –

+0

はい。例外が解決されました。私は正規表現に基づいてパスワードの文字列が必要ですが、私は前に述べたように無効な文字を取得します。 – karan

関連する問題