我正在为Node.js编写路由器,并试图找出如何在没有前导零的情况下匹配整数子串。
这是一条潜在的路线写法:
'/users/[int]/'
而我正试图用正则表达式替换'[int]',这在以下情况下是真的:
•值为整数,
•没有前导零。
/\/users\/(^[1-9][0-9]*)\//.test('/users/12345678/');
'/ users / 1023 /'应该返回true
'/ users / 0203 /'应该返回false。
因为我只测试字符串的一部分,所以似乎我不能使用^插入符号或$ dollar符号。
答案 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*\//