0

我正在为 Node.js 编写一个路由器,并试图弄清楚如何仅在整数子字符串没有前导零时才匹配它们。

这就是潜在路线的编写方式:

'/users/[int]/'

我试图只用正则表达式替换'[int]',这在以下情况下是正确的:
•value 是整数,
•没有前导零。

/\/users\/(^[1-9][0-9]*)\//.test('/users/12345678/');

'/users/1023/' 应该返回 true。
'/users/0203/' 应该返回 false。

因为我只测试字符串的一部分,所以我似乎不能使用 ^ 插入符号或 $ 美元符号。

4

2 回答 2

0

哇,被这件事难住了好几个小时,然后在发布后不久就想通了。

看起来单词边界字符是解决方案:

/\/users\/\b[1-9][0-9]*\//.test('/users/1023'); returns true.
/\/users\/\b[1-9][0-9]*\//.test('/users/01023'); returns false.

[编辑]

那也不是。它只需要为单个 0 返回 true。

/\/users\/\b[[1-9][0-9]*\//.test('/users/0/'); returns false, should return true.

[编辑]

我想我解决了它:

/\/users\/([0-9]|[1-9][0-9]*)\//.test('/users/0/'); returns true
于 2013-09-22T07:27:35.833 回答
0

使用负面的展望:

/\/users\/(?!0)\d+\//

或者简单地断言第一个数字不是零:

/\/users\/[1-9]\d*\//
于 2013-09-23T01:19:12.357 回答