匹配不包含特定字符序列的字符串

时间:2009-08-24 18:07:27

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

我正在尝试使用正则表达式来匹配不包含小于符号(<)后跟非空格的字符序列的字符串。以下是一些例子

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

我似乎无法找到正确的表达来获得匹配。我正在使用Microsoft Regular Expression验证器,所以我需要它才能匹配,而不是使用代码来否定匹配。

任何帮助都将不胜感激。

谢谢,
戴尔

5 个答案:

答案 0 :(得分:6)

@"^(?:[^<]+|<(?!\s))*$"

对空格执行负前瞻允许它匹配,如果字符串中的最后一个字符是“&lt;”。这是另一种方式:

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

前瞻扫描整个字符串的“&lt;”紧接着是一个非空白字符。如果找不到,则“。+”继续并匹配字符串。

答案 1 :(得分:1)

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

  1. <
  2. 之外的任何字符
  3. A <后跟空格。
  4. 我们可以直接写作:

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

使用否定前瞻:“&lt;(?!)”

答案 4 :(得分:0)

我认为这可能是你想要的。

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



 Try this:   <\S

这会查找标记少于标记但后面缺少空格的内容。

在这种情况下,它将匹配"<n"

不确定你希望它匹配多少。