Javascript正则表达式:匹配子字符串没有前导零

时间:2013-09-22 07:20:54

标签: javascript regex substring

我正在为Node.js编写路由器,并试图找出如何在没有前导零的情况下匹配整数子串。

这是一条潜在的路线写法:

'/users/[int]/'

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

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用负面展望:

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

或者只是断言第一个数字不是零:

/\/users\/[1-9]\d*\//