首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Peg JS编写范围语法

如何用Peg JS编写范围语法
EN

Stack Overflow用户
提问于 2020-12-30 10:00:22
回答 2查看 152关注 0票数 1

我试图编写语法来验证1到128之间的数字,但是无法在peg.js中完成任务,尽管它在与Javascript兼容的正则表达式中工作。

正则表达式:^(120-8\101-1-91-9)$

但不能在peg.js中复制相同的表达式。

代码语言:javascript
复制
numberRange = l: (rangeRegex) m:(integer*)  {
if(m.length !== 0){
l = l + m.join("");
}
return l;
}

rangeRegex = ^(12[0-8]|1[01][0-9]|[1-9]?[1-9])$

我也尝试在Peg.js中使用相同的正则表达式,这会抛出Expected "!", "$", "&", "(", ".", character class, comment, end of the line, identifier, literal, or whitespace but "^" found.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-04 08:42:03

我们无法在peg.js中直接匹配正则表达式,但是,我们可以使用peg.js谓词中的regex来验证数字。如果数字与所提供的regex不匹配,则我们有抛出自定义错误的特权。

代码语言:javascript
复制
numberRange = l: (rangeRegex* ) {
            if (l.length > 0) {
               l = l.join("");
            }
        
            if (l.match('^(12[0-8]|1[01][0-9]|[1-9][0-9]?)$')) {
               return l;
            } else {
              error("The number must be in a range of 1 to 128");
            }
        }

rangeRegex =[0-9]

下面的代码帮助我验证了1到128范围内的数字。我希望这对其他人也有帮助。

票数 1
EN

Stack Overflow用户

发布于 2021-01-13 17:48:33

下面是另一个没有regex的解决方案:

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

https://stackoverflow.com/questions/65505113

复制
相关文章

相似问题

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