我想使用Peg.js来解析和验证一些我一直在使用正则表达式并在语法上苦苦挣扎的东西。
我的Peg.js程序是:
start = (var / other) cr
d:var {return d.join('')}
var = [^(?=.{1,32}$)([a-zA-Z_][a-zA-Z0-9_]*)$] {return "OK"}
other = . {return "NOT OK"}
cr = "\n"我正在用下面的文字测试它:
test1
no space
1var
_temp
ReallyLongNameisInvalidandLongerthan32
IncorrectChars!!asdf
_
underscore_is_fine_我希望结果是是的,不,不,是的,不,是的,但是在规则表达式错误的循环中,通常工作得很好。
发布于 2018-09-27 14:58:42
当peg规则不匹配时,它将尝试匹配下一个规则,直到它用尽规则为止。试一试以下几种方法:
start = line+
line = d:(var / other)
{
return d;
}
var = v:$([a-zA-Z_][a-zA-Z0-9_]*) cr
{
if (v.length > 32) {
return "no";
} else {
return "yes";
}
}
other = [^\n]+ cr
{
return "no";
}
cr = "\n"输出:
[
"yes",
"no",
"no",
"yes",
"no",
"no",
"yes",
"yes"
]https://stackoverflow.com/questions/52531280
复制相似问题