正则表达式检查单词是否不存在

时间:2012-04-02 16:00:13

标签: asp.net regex

我的测试字符串包含新行。

Test<?TEST.
sdasdsadads
Test<?TEST.

Test<?TEST.

我想检查文本中的任何位置是否存在组合<?。如果是这样,我的正则表达式应该失败。

有什么想法吗?

ASP.NET网页。\

<td>
                            <asp:TextBox ID="test" runat="server" Height="55px" TextMode="MultiLine"></asp:TextBox>
                            <asp:RegularExpressionValidator ID="RegularExpressionValidator11" runat="server"
                                ControlToValidate="test" Display="Dynamic" ForeColor="Red"
                                ValidationGroup="Validations" ValidationExpression="^(?![\s\S]*<\?)" EnableClientScript="true"></asp:RegularExpressionValidator>
                        </td>

4 个答案:

答案 0 :(得分:1)

这是负面的先行断言:

^(?!.*<\?)
仅当字符串中的任何位置不出现<?时,

才匹配。如果您的文字可以包含换行符,则可能需要在开头添加(?s)

答案 1 :(得分:1)

您无需使用正则表达式来搜索特定单词。相反,只需对该特定单词进行简单的子字符串搜索。

在Python中,这看起来像:

def string_contains_test (text):
    lowercase_text = text.lower()
    if 'test' in lowercase_text:
        return True
    else:
        return False

text_1 = "Lorem ipsum dolor sit amur...."
text_2 = "This is a test."

string_contains_test ( text_1 ) # False.
string_contains_test ( text_2 ) # True.

请注意,对Unicode字符串进行大小写折叠(将字符串转换为大写或小写)是不好的。不要那样做。

答案 2 :(得分:1)

喜欢这个吗?

!Regex.IsMatch(testString, Regex.Escape("<?"))

甚至更容易:

!testString.Contains("<?")

仅使用正则表达式(这也适用于换行符):

^(?![\s\S]*<\?)

答案 3 :(得分:0)

1589823171342