我正在开发一个应用程序,用户输入正则表达式作为过滤条件,但我不希望人们(轻松)能够输入.*(即匹配任何东西).问题是,如果我只是使用if (expression == ".*"),那么通过输入诸如此类的东西可以很容易地回避这个问题.*.*.
有没有人知道一个可能需要一个正则表达式的测试,看看它是否基本上.*是一个稍微复杂的形式?
我的想法是:
我可以看到表达式是否是一个或多个重复.*,(即如果它匹配(\.\*)+(引用/转义可能不完全准确,但你得到了想法).这个问题是可能有其他形式的全局写匹配(例如with $和^)太过于详尽,甚至没有考虑到前期,请进行测试.
我可以用它测试一些随机生成的字符串,并假设如果它们全部通过,则用户输入了全局匹配模式.这种方法的问题在于,可能存在表达式足够严密的情况,我只选择坏的字符串来匹配.
思绪,有人吗?
(仅供参考,该应用程序使用Java,但我想这更像是一个算法问题,而不是特定语言的问题.)