我正在寻找一个 JavaScript 库(最好是 node.js 包),它可以检查字符串是否与正则表达式增量匹配(即一次一个字符),并返回不确定的结果。例如,假设我有以下正则表达式:
j.*s.*
我想测试字符串“javascript”。我想要一个类似于以下的 API:
var iregex = new IncrementalRegex('j.*s.*');
var matcher = iregex.createMatcher();
matcher.append('j');
matcher.test(); //returns "possible match"
matcher.append('a');
matcher.test(); //returns "possible match"
matcher.append('v'); matcher.append('a'); matcher.append('s');
matcher.test(); //returns "match found"
matcher.append('ript');
matcher.test(); //returns "match found"
而如果我测试字符串“foo”,我会期待这样的结果:
var matcher2 = iregex.createMatcher();
matcher.append('f');
matcher.test(); //returns "no match possible"
//At this point I wouldn't bother appending "oo" because I know that no match is possible.
编辑:要清楚,追加正在构建正在测试的字符串。一个新的匹配器开始对空字符串进行测试,并在 matcher.append('foo') 之后与 foo 匹配。appendToString 或 buildUpString 可能是更好的名称。
另外,我对如何做到这一点有一个想法,但我还没有完全考虑清楚。也许可以从原始正则表达式构建一个“潜在匹配”正则表达式,当且仅当它们是原始正则表达式匹配的字符串的开头时才会匹配字符串。