Regex未在服务器端验证的代码隐藏中工作

Regex not working in Code behind for Server side validation

本文关键字:代码 隐藏 工作 验证 服务器端 Regex      更新时间:2023-09-26

我有一个用于验证文本框的js代码。但问题是,相同的regex在代码隐藏中不起作用。参见代码:-

相同的HTML:-

<asp:TextBox ID="txtSearch" runat="server" class="txtfld-search" oncopy="return false" oncut="return false" onpaste="return false"></asp:TextBox>
        <asp:CustomValidator ID="CustomValidator1" runat="server" ForeColor="Red" ErrorMessage="Please enter numeric values."
OnServerValidate="Validate_Numeric" ControlToValidate="txtSearch"></asp:CustomValidator>

<script type="text/javascript">
$(document).ready(function () {
    $('#ctl00_topNavigation_txtSearch').keyup(function () {
        var $th = $(this);
        $th.val($th.val().replace(/[^.%a-zA-Z0-9 ]/g,
        function (str) {
            alert('Special characters not allowed except %');
            return '';
        }));
    });
});

我使用这样,但它不工作

    protected void Validate_Numeric(object sender, ServerValidateEventArgs e)
{
    System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("/[^.%a-zA-Z0-9 ]/g");
    e.IsValid = r.IsMatch(txtSearch.Text);
}

我想要这个/[^.%a-zA-Z0-9 ]/g,相同的正则表达式在代码隐藏中使用。请帮忙。

不确定。也许这会对你有所帮助。这个答案并不完全适合你。然而,你会有一个想法来克服这个问题。

using System.Text.RegularExpressions;

protected void Validate_Numeric(object sender, ServerValidateEventArgs e)
{
    string Pattern = @"[^.%a-zA-Z0-9]";
    e.IsValid = Regex.IsMatch(txtSearch.Text, Pattern);    
}