還沒實現目前通行的正則語法,但已實現它的等價形式,下一步只需支持自動編譯即可。
克萊尼代數中的三種運算:選擇、順序、重複,分別對應 Object 的 key,子 Object,引用到父 Object 的子 Object。
var r = {}, a = {b: {b: ""}};
a.a = a; // a*bb
r.a = a; // aa*bb
var c = {c: {c: {c: {"": "", c: {"": "", c: ""}}}}}; // c{3,5}
var l = {l: {i: {l: {y: ""}}, a: {d: {y: ""}}}}; // lily|lady
function test(s, r) {
for (var i in s) {
var j = s[i];
if (typeof r[j] !== "undefined")
r = r[j];
else
return false;
}
if (r === "")
return true;
if (r[""] === "")
return true;
return false;
}
console.log(test("aaaabb", r), test("bb", r), test("aaaa", r));
console.log(test("aaaabb", a), test("bb", a), test("aaaa", a));
console.log(test("cc", c), test("ccc", c), test("cccc", c), test("ccccc", c), test("cccccc", c));
console.log(test("lily", l), test("lady", l), test("ladysmith", l), test("lad", l));
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。