我一直在尝试使用正则表达式,但我似乎无法让它工作。我正在尝试使用asp.net RegularExpressionValidator
的正则表达式。我想要它做的是基本上只允许前导和尾随空格。
所以,
"hello " // would not work.
"hello my name is" // would work.
但是在我的所有尝试中,无论我投入什么,它都表示输入错误。
以下是我使用的内容:
^\s[a-z]+\s$
有人可以提供一个有效的吗?
而且,当有人说正则表达式返回匹配时,这意味着什么?
编辑:
我已经尝试了线程中的所有解决方案,但它们都不适用于我。也许这是其他错误而不是正则表达式? Heres是相关代码:
<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] $&lt; =======这个实际上有效!!
答案 0 :(得分:2)
鉴于RegularExpressionValidator
正在寻找与良好输入匹配而不是反之亦然:
以下正则表达式将匹配空格前面或后面没有的任何内容:
^(?!\s+).+(?<!\s+)$
虽然问题评论中提到的修剪选项似乎是一种更明智的方法。
答案 1 :(得分:1)
试试这个正则表达式,它应匹配开头和结尾没有空格的所有内容
^[^\s].+[^\s]$
答案 2 :(得分:0)
正则表达式验证器是一个积极的测试。您有三种情况需要测试
由于输入控件上有一个Required验证器,因此不会出现第一种情况。以下vanilla正则表达式应该有效:
^[^\s]([.\n]*[^\s])?$
您可以将其视为有效输入包含:
.
匹配任何字符除 LF),然后是由于您的示例中有多行编辑控件,因此在中间使用.*
而不是我使用的[.\n]*
将导致匹配在找到的第一个LF字符处终止。有关.Net正则表达式字符类的详细信息,请参阅http://msdn.microsoft.com/en-us/library/az24scfc.aspx#character_classes。
[编辑注意]
测试显示由于某种原因,.Net不喜欢包含[]
的{{1}}个字符类(或者它将其视为文字句点字符)。这个正则表达式有效:
.
但它允许尾随换行符。
然而,这个正则表达式更好(对于某些更好的定义)。它(A)不涉及回溯,(B)不允许拖尾换行:
^([^\s])((.|\n)*[^\s])$
祝你好运!