【问题标题】:Match a string that does not contain a certain character sequence匹配不包含某个字符序列的字符串
【发布时间】:2010-11-22 08:54:23
【问题描述】:

我正在尝试使用正则表达式来匹配不包含小于号 (

有效 - "A new description."
有效 - "A < new description."
无效 - "A <new description."

我似乎找不到合适的表达方式来匹配。我正在使用 Microsoft 正则表达式验证器,所以我需要它是一个匹配项,而不是使用代码来否定匹配项。

我们将不胜感激。

谢谢,
戴尔

【问题讨论】:

  • 你现在用的是什么表达方式?
  • 我已经尝试了几个。我的最后一个类似于 ^.*
  • 我不知道为什么

标签: .net asp.net regex regex-negation


【解决方案1】:
@"^(?:[^<]+|<(?!\s))*$"

如果字符串中的最后一个字符是“

^(?!.*<\S).+$

先行扫描整个字符串以查找紧跟非空白字符的“

【讨论】:

  • 哦,你们摇滚!我不敢相信我这么快就得到了这么多可能的答案。这个表达式 ^(?!.*
【解决方案2】:

换句话说,你的字符串中允许有两件事:

  1. &lt; 之外的任何字符
  2. &lt; 后跟一个空格。

我们可以直接写成:

/([^<]|(< ))+/

【讨论】:

  • “/^([^<]|< )+$/ 来强调整个字符串必须匹配。 (RegularExpressionValidator 添加了一个隐含的 ^...$,因此在特定情况下您可以不使用它们。)
  • 这真的很接近。如果小于符号位于字符串的末尾,则不匹配,但如有必要,我可以接受。
【解决方案3】:

使用否定前瞻:“

【讨论】:

  • 这就是我一直试图走的路,我似乎无法正确使用语法。
【解决方案4】:

我想这可能就是您要找的东西。

Valid - "A new description."
Valid - "A < new description."
Invalid - "A <new description."



 Try this:   <\S

这会查找带有小于号且后面缺少空格的内容。

在这种情况下,它将匹配 "&lt;n"

但不确定您希望它匹配多少。

【讨论】:

    【解决方案5】:
    var reg = new Regex(@"<(?!\s)");
    string text = "it <matches";
    string text2 = "it< doesn't match";
    
    reg.Match(text);// <-- Match.Sucess == true
    reg.Match(text2);// <-- Match.Sucess == false
    

    【讨论】:

    • “不匹配”怎么办?我似乎没有在那个字符串上得到匹配。如果字符串不包含
    • 不幸的是,如果字符串根本不包含小于符号,那仍然找不到匹配项。
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 2019-04-24
    • 2010-11-26
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多