我正在尝试使用正则表达式来匹配不包含小于符号(<)后跟非空格的字符序列的字符串。以下是一些例子
有效 - "A new description."
有效 - "A < new description."
无效 - "A <new description."
我似乎无法找到正确的表达来获得匹配。我正在使用Microsoft Regular Expression验证器,所以我需要它才能匹配,而不是使用代码来否定匹配。
任何帮助都将不胜感激。
谢谢,
戴尔
答案 0 :(得分:6)
@"^(?:[^<]+|<(?!\s))*$"
对空格执行负前瞻允许它匹配,如果字符串中的最后一个字符是“&lt;”。这是另一种方式:
^(?!.*<\S).+$
前瞻扫描整个字符串的“&lt;”紧接着是一个非空白字符。如果找不到,则“。+”继续并匹配字符串。
答案 1 :(得分:1)
换句话说,你在字符串中允许两件事:
<
<
后跟空格。我们可以直接写作:
/([^<]|(< ))+/
答案 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"
不确定你希望它匹配多少。