2

C#コードから正規表現を取得するコード行があります

 $("#but").keyup(function () 
 {

     var regex = /<%:StringKeeper.InfoRegex.ToString()%>/;
     var info = $("#Info").val(); // info from edit-field
     var matches = regex.exec(info);

     var part1 = matches[1];
     var part2 = matches[2];

          if (matches != null)
              {
                 if (part1.length != 6 && part2.length != 5 || 
                    (part1 == '000000' || part2 == '00000'))
                     {
                        showWarning = true;
                     }
              }
           else  { showWarning = true; }

 if (showWarning) 
 {
 $("#butWarning").show();
 $("#submitButton").attr('disabled', 'disabled');
 });

$("#but").keyup();

問題は、ビジュアルスタジオが「;」を認識していないことです。最初の行の終わりにはコメントがありません。したがって、コードがまだ機能していても、コードの次の行に警告が表示されます。

編集:人々がより多くの情報を望んでいたので、コードは今完全な機能を示しています。基本的に、ある入力フィールドのキーアップイベントで正規表現がチェックされ、警告が表示されない場合は、入力が正規表現と一致するかどうかが確認されます。

        public static Regex InfoRegex
    {
        get
        {
            return new Regex(@"^[Xx][Yy]0(\d{6})(\d{5})$");
        }
    }

これを回避する方法や、私が使用していると思われる新しい構文を知っている人はいますか?

4

2 に答える 2

1

Intellisenseは、.jsとC#およびHTMLのすべての可能な組み合わせを処理できるわけではありません。私は時々これに気づきます、そしてそれから彼らがそれをどのように機能させたのか疑問に思います。

InfoRegexがstring.Emptyの場合、コードは実際にJSコメントを生成します。

 var regex = /<%:StringKeeper.InfoRegex.ToString()%>/;

(これは私にCパズルを思い出させます

int *p, *q;
int a = *p/*q;

)。

元の行をに変更します

 var regex = /<%:StringKeeper.InfoRegex.ToString()%>/; /*
             /dummy-expression-for-IDE/;   /*           */

IDEモードでは、計算された正規表現はコメントと見なされるため、複数行のbegin-commentは無視されます。ケース2の終了コメントには、2番目の開始コメントが必要です。

コンパイルモードでは、計算された正規表現が使用され、複数行のコメントが1行目から始まります。

于 2013-01-31T00:16:37.410 に答える
1

これを試してください。ただし、jsファイルではなく、aspxまたはascxファイルで試してください。

var regex = /<%=StringKeeper.InfoRegex.ToString()%>/;

于 2013-01-30T23:34:51.917 に答える