匹配一个ant正则表达式,但不匹配其他正则表达式



我想允许ant属性使用以下语法foo_abc:bar1,bar2,blah|foo_def:bar1,bar2|s64lk:kj,34kj

我写了下面的ant条件来验证并存储在legalmyprop中。第一个matches匹配完整的有效字符串。下面的not matches明确禁止用户可能尝试的任何其他特殊字符。not匹配似乎不工作

<condition property="legalmyprop" value="${myprop}">
  <and>
      <matches string="${myprop}" pattern="^[^:,|]+:[^,:|]+(,[^:,|]+)*(|[^:,|]+:[^:,|]+(,[^:,|]+)*)*$" />
      <not> <matches string="${myprop}" pattern="^.*[ =}{.;)(]+*^\'].*$" /> </not>
      <not> <matches string="${myprop}" pattern='^.*["].*$' /> </not>
  </and>
</condition>

foo:bar,失败

foo_abc:bar1,bar2,blah|foo_def:bar1,bar2|s64lk:kj,34kj作为将

foo::bar|失败

foo:bar.abc作为意外通过

foo:bar=abc作为意外通过

任何想法如何修复正则表达式?

让我们仔细看看当前的不匹配条件:

^.*[ =}{.;)(]+*^\'].*$
   ^        ^
   |        |
 Start     End of the character class

当前的char类是[ =}{.;)(],您希望它是:

[ =}{.;)(]+*^\']
         ^

按预期工作

相关内容

  • 没有找到相关文章

最新更新