我有一行代码从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})$");
}
}
有谁知道如何解决这个问题或者我想要使用的新语法是什么?
答案 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行开始。