【问题标题】:Correct Verification of Regex正则表达式的正确验证
【发布时间】:2015-09-11 11:20:29
【问题描述】:

我有一个 asp.net 文本框,它必须接受数字、字母和一小组特殊字符:[~],[/],[.], [_] and [-]

所以我创建了正则表达式

([A-Za-z0-9\~.\-\/_ ])

并作为

应用于文本框
<dx:ASPxTextBox runat="server" ID="txtParams" Width="220px" ClientEnabled="True">
                            <ValidationSettings
                                ValidationGroup="group1"
                                CausesValidation="true">
                                <RequiredField IsRequired="True" ErrorText="<%$Resources:Resources, RequireValidationMessage %>" />
                                <RegularExpression ErrorText="<%$Resources:Resources, ValidateElementsMessage %>" ValidationExpression="[A-Za-z0-9\~.\-\/_ ]" />
                            </ValidationSettings>
                        </dx:ASPxTextBox>

当我在regexhero 上测试这个正则表达式时,它通过了测试数据

/home/File.txt~data_file10~2015-10-10

但我的文本框拒绝它并显示错误消息。 我使用了那个测试器,因为它基于 .net 来消除正则表达式实现的恶作剧,但我在这里。

我的正则表达式错了吗?到目前为止,文本框上还没有进行任何处理。

【问题讨论】:

  • 尝试使用"[A-Za-z0-9~./_ -]"
  • 文本框上的测试数据仍然失败
  • 也许这个值需要整个输入来匹配。试试^[A-Za-z0-9~./_ -]+$
  • 你试过我建议的正则表达式了吗?我认为它应该可以工作,因为a similar one 工作了。
  • 非常感谢,我做到了。现在,你能做出一个正确的答案让我接受吗?

标签: asp.net .net regex


【解决方案1】:

由于这里的正则表达式应该匹配整个输入,因此您需要在两端锚定正则表达式^(输入字符串的开头)和$(输入字符串的结尾):

^[A-Za-z0-9~./_ -]+$

另外,最好将- 放在字符类的末尾以避免转义,还要注意~/._ 没有在字符类中进行转义以被视为文字符号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多