我有一行代码从 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();
问题是 Visual Studio 没有意识到“;”第一行末尾没有注释。 因此,即使代码仍然有效,它也会对下一行代码发出警告。
编辑:由于人们想要更多信息,代码现在显示了完整的功能。基本上,如果在某个输入字段的按键事件上,会检查正则表达式以查看输入是否与我的正则表达式匹配,如果不匹配,我将发出警告。
public static Regex InfoRegex
{
get
{
return new Regex(@"^[Xx][Yy]0(\d{6})(\d{5})$");
}
}
有谁知道如何解决这个问题或者我应该使用什么新语法?
最佳答案
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 的结束注释需要第二个开始注释:
在编译模式下,使用计算出的正则表达式,多行注释从第 1 行开始。
关于c# - Visual Studio 2012 语法错误/<% : method %>/;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592917/