我试图编写语法来验证1到128之间的数字,但是无法在peg.js中完成任务,尽管它在与Javascript兼容的正则表达式中工作。
正则表达式:^(120-8\101-1-91-9)$
但不能在peg.js中复制相同的表达式。
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.
发布于 2021-01-04 08:42:03
我们无法在peg.js中直接匹配正则表达式,但是,我们可以使用peg.js谓词中的regex来验证数字。如果数字与所提供的regex不匹配,则我们有抛出自定义错误的特权。
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范围内的数字。我希望这对其他人也有帮助。
发布于 2021-01-13 17:48:33
下面是另一个没有regex的解决方案:
numberRange = "1" [0-2] [0-8] / [1-9] [0-9] / [1-9]https://stackoverflow.com/questions/65505113
复制相似问题