帮我生成这个正则表达式
本文关键字:正则表达式 | 更新日期: 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个非空白字符,其次是,
- 0个或多个字符,包括LF(默认情况下元字符
- 行尾
由于您在示例中有多行编辑控件,因此在中间使用.*
而不是我使用的[.'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个或多个非空白字符,其次是,
- 行尾。
祝你好运!