visual studio 2012语法错误与/<%:method%> /;

时间:2013-01-29 21:47:39

标签: c# javascript

我有一行代码从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();

问题是视觉工作室没有意识到“;”在第一行的末尾没有评论。 因此,即使代码仍然有效,它也会对下一行代码发出警告。

编辑:代码现在显示全部功能,因为人们想要更多信息。基本上,如果在一些输入字段的key up事件中,正在检查正则表达式以查看输入是否与我的正则表达式匹配,如果不是我将发出警告。

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

有谁知道如何解决这个问题或者我想要使用的新语法是什么?

2 个答案:

答案 0 :(得分:1)

尝试这个,但是你应该尝试使用aspx或ascx文件,而不是js文件。

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

答案 1 :(得分: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模式下,计算出的RegEx被视为注释,因此忽略多行开始注释。案例2的最终评论需要第二个开始评论:

在编译模式下,使用计算出的RegEx,多行注释从第1行开始。