替换c#函数bijJquery在不知道如何进行故障排除的情况下不起作用

Replacing c# function bij Jquery not working without knowing how to troubleshoot

本文关键字:排除 故障 情况下 不起作用 何进行 函数 bijJquery 不知道 替换      更新时间:2023-09-26

我正试图用javascript/Jquery方法替换ASP.NET(C#)服务器端方法。我是Jquery的新手,但在开始使用正则表达式之前一切都很顺利。

我在ASP.NET C#中的代码

if ((Regex.Match(postcode.Trim(), @"^[1-9]'d{3} ?[a-zA-Z]{2}$")).Success)
    {
       return Regex.Replace(postcode.Trim(), @"(^[1-9]'d{3})( ?)([a-zA-Z]{2}$)", "$1$3").ToUpper();
    }
    else
    {
       throw new Exception("Postcode incorrect");
    }

在Jquery中,我暂时只想通过手动输入正确的字符串来进行替换。

我创建了一个函数,比如:

function FormatDutchPostalCode() {
   var postcode = $("#Text1").val();
   postcode = postcode.replace(/(^[1-9]'d{3})( ?)([a-zA-Z]{2}$)/, $1$3);
   $("#Text1").val(postcode);
}

我从文本框中得到了值,到目前为止还不错。但当替换时,浏览器似乎退出了功能(在IE9和FF10.0.1中测试)

我做错了什么,是否可以对Jquery/Javascript进行故障排除。我见过firebug可以设置断点,但我找不到是否会发生错误(如果是的话,是哪一个)。

这里是C#函数到JS的端口。它使用IIFE来缓存正则表达式,而不会污染当前的执行范围。

jsFiddle

var FormatDutchPostalCode = (function() {
    var reg = /^([1-9]'d{3})'s?([a-z]{2})$/i;
    return function(){
        var postcode = $.trim($("#Text1").val());
        if (postcode && postcode.match(reg) )
        {
            return postcode.replace(reg, "$1$2").toUpperCase();
        }
        else
        {
            throw new Error("Postcode incorrect");
        }
    };
}());

您需要使用'$1$3'/$1$3/作为替换模式。目前,您已经将替换模式放置在中,而没有将其用作字符串或正则表达式模式。

看看这个jsFiddle链接,它显示了一个有效的解决方案。

您还可以通过删除可选空间的捕获组来简化您的模式,然后您可以使用现有的捕获组执行替换:

  • 图案:/^([1-9]'d{3}) ?([a-zA-Z]{2})$/
  • 替换:'$1$2'(仅存在2组)

要使用Firebug或开发人员工具,您应该能够使用F12键启动该工具。您可以直接在控制台窗口中测试您的替换,或者从脚本选项卡调试脚本(选择相关的JavaScript文件),并通过右键单击并添加断点或单击左侧的行号在您感兴趣的行上放置断点。

查看本文了解更多详细信息:针对初学者的JavaScript调试。