首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Peg.js与Regex的区别

Peg.js与Regex的区别
EN

Stack Overflow用户
提问于 2018-09-27 07:03:01
回答 1查看 344关注 0票数 0

我想使用Peg.js来解析和验证一些我一直在使用正则表达式并在语法上苦苦挣扎的东西。

我的Peg.js程序是:

代码语言:javascript
复制
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"

我正在用下面的文字测试它:

代码语言:javascript
复制
test1
no space
1var
_temp
ReallyLongNameisInvalidandLongerthan32
IncorrectChars!!asdf
_
underscore_is_fine_

我希望结果是是的,不,不,是的,不,是的,但是在规则表达式错误的循环中,通常工作得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 14:58:42

当peg规则不匹配时,它将尝试匹配下一个规则,直到它用尽规则为止。试一试以下几种方法:

代码语言:javascript
复制
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"

输出:

代码语言:javascript
复制
[
   "yes",
   "no",
   "no",
   "yes",
   "no",
   "no",
   "yes",
   "yes"
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52531280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档