我创建了以下正则表达式:
(^[%a-zA-Z][\w\-.]+)( [\w\-.]+|[\w\-.]+)([%A-Za-z.]$)
应该允许的字符串,例如
test (working)
test test (working)
%test (working)
test% (working)
%test% (working)
% (not working)
我尝试了以下方法使%只能工作:
(%|(^[%a-zA-Z][\w\-.]+)( [\w\-.]+|[\w\-.]+)([%A-Za-z.]$))
定义的模式适用于https://www.debuggex.com,但在我的应用程序中失败,模型看起来像:
[Display(Name = "Publisher")]
[RegularExpression(@"(%|(^[%a-zA-Z][\w\-.]+)( [\w\-.]+|[\w\-.]+)([%A-Za-z.]$))", ErrorMessage = "Invalid Expression!")]
public string SoftwarePublisher { get; set; }
任何建议都会有所帮助。提前谢谢
答案 0 :(得分:1)
这种模式应该比你的尝试更好,因为它适用于我:
<强>模式强>
(^|%)((\w+\s?)+)([^\s]$|%)|%
<强> INPUT 强>
case 1: test
case 2: test
case 3: %test
case 4: test%
case 5: %test%
case 6: %
<强>输出强>
case 1: matches
case 2: matches
case 3: matches
case 4: matches
case 5: matches
case 6: matches
希望它对您有用或至少给您一些提示。如果您将在某个网站上对其进行测试,请在我使用^
和$
时单独使用所有字符串。
答案 1 :(得分:0)
您正在使用的表达式将仅对小于4个字符的所有字符串测试为负数。第1组为2,第2组为1(第2组),第3组为1。
你可以检查这个以测试'tes'将失败,'%%%%'将通过(即使你从你的正则表达式中取%)。
如果您需要有关正则表达式的帮助,请告诉我们您要实现的目标。无论如何,建议首先用人类可读的语言写下你想要的正则表达式。
例如:
任何字符串:
以3个字母开头
一个可选的'_'
等