0

さまざまな入力セットを許可する正規表現を作成しようとしています。

最初の 9 文字は数字である必要があります - 123456789

10 文字はオプションで、存在する場合はアルファベットにする必要があります - 123456789A

プリセットが英数字の場合は 11 文字 - 123456789AA または 123456789A1

12 - 14 文字 (プリセットが数値の場合) - 123456789AA123 または 123456789A1123

私はこれを試しましたが、うまくいきません..

 string sMatch = "^[0-9]{9}([a-zA-Z])\?{1}([0-9A-Za-z])\?{1}([0-9])?{1}([0-9])\?{1}$";
            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(sMatch);
4

3 に答える 3

1

私はC#の正規表現の実装を知りませんが、どうですか:

\d{9}[a-zA-Z]?[a-zA-Z0-9]?\d{0,3}
于 2013-10-13T04:19:23.840 に答える
1

以下を試してください

string sMatch = "^(?i)\\b\\d{9}[a-z]?[^\W_]?\\d{0,3}\\b$";

ライブデモを見る

于 2013-10-13T05:01:13.343 に答える
0

A. \? ちゃんと。

B. いくつかのステートメントに分割します。IE:

string preset1 = @"^[0-9]{9}", preset2 = @"[a-zA-Z]{1}", preset3 = @"[0-9A-Za-z]{1}", 
    preset4 = @"[0-9]{3}$";
if (Regex.IsMatch(input, preset1){
    //Do fits first preset
    if (Regex.IsMatch(input, preset1 + preset2){
        //Do fits second preset
        if (Regex.IsMatch(input, preset1 + preset2 + preset3)){
            //Do fits third preset
            if (Regex.IsMatch(input, preset1 + preset2 + preset 3 + preset4)){
                //Do fits fourth preset
            }
        }
    }
}
于 2013-10-13T04:33:37.010 に答える