帮我生成这个正则表达式

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:07:14

我一直在尝试使用正则表达式,但我似乎不能让它工作。我试图使用正则表达式与asp.net RegularExpressionValidator。我想让它做的是基本上禁止只允许前导和尾随空格。

"hello "                 // would not work.
"hello my name is"       // would work.

但是在我所有的尝试中,无论我输入什么,它都显示输入错误

下面是我使用的:

^'s[a-z]+'s$

有人能提供一个工作吗?

而且,当有人说正则表达式返回匹配时,这意味着什么?

编辑:

我已经尝试了线程中的所有解决方案,没有一个适合我。也许是其他东西错了,而不是正则表达式?以下是相关代码:

                            <InsertItemTemplate>
                            <asp:TextBox CssClass="tbUpdateSummary" TextMode="MultiLine" Text='<%# Bind("updateSummary") %>'
                                ID="tbUpdateSummaryInsert" runat="server"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="valUpdateSummaryInsert1" runat="server" Display="None"
                                ControlToValidate="tbUpdateSummaryInsert" ErrorMessage="Update summary must not be empty.">
                            </asp:RequiredFieldValidator>
                            <asp:RegularExpressionValidator ValidationExpression="^'s+|'s$" ID="valUpdateSummaryEdit2"
                                runat="server" Display="None" ControlToValidate="tbUpdateSummaryInsert"  ErrorMessage="Update summary must not contain leading or trailing spaces."> </asp:RegularExpressionValidator>
                            <%--Put c# code to validate length (max 200)--%>
                            <asp:CustomValidator></asp:CustomValidator>
                        </InsertItemTemplate>

^ ^ ' [s]。+[^'s]$ <=======这个确实有效!!

帮我生成这个正则表达式

考虑到RegularExpressionValidator正在寻找匹配良好的输入,而不是相反:

下面的正则表达式将匹配前面或后面没有空格的任何内容:

^(?!'s+).+(?<!'s+)$

尽管在问题的评论中提到的Trim选项似乎是更明智的方式。

试试这个正则表达式,它应该匹配所有在开始和结束处没有空白的内容

^[^'s].+[^'s]$

正则表达式验证器为阳性测试。您有三种情况要测试

  • 输入长度为0。
  • 输入长度为1
  • 输入长度> 1

因为在输入控件上有Required验证器,所以第一种情况不会发生。下面的正则表达式应该可以工作:

^[^'s]([.'n]*[^'s])?$

你可以理解为有效的输入包括:

  • 行首,后接
  • 正好1个非空白字符,后面跟着
  • 一个可选的子表达式,由
    • 0个或多个字符,包括LF(默认情况下元字符.匹配除 LF以外的任何字符),后面跟着
    • 恰好1个非空白字符,其次是,
  • 行尾

由于您在示例中有多行编辑控件,因此在中间使用.*而不是我使用的[.'n]*将导致匹配在找到的第一个LF字符处终止。有关. net正则表达式字符类的详细信息,请参阅http://msdn.microsoft.com/en-us/library/az24scfc.aspx#character_classes。

[编辑说明]

测试表明,由于某种原因,. net不喜欢包含.[]字符类(或者将其视为文字句点字符)。

^([^'s])((.|'n)*[^'s])$

但是它允许尾随换行

然而,这个正则表达式更好(对于更好的某些定义)。它(A)不涉及回溯,并且(B)不允许尾随换行符:

^[^'s]+('s+[^'s]+)*$
  • 行首,后跟
  • 1个或多个非空白字符,后面跟着
  • 零次或多次重复
    • 1个或多个空白字符,后面跟着
    • 1个或多个非空白字符,其次是,
  • 行尾。

祝你好运!