正则表达式为两位数

时间:2014-06-24 14:43:26

标签: javascript regex

如果我这样做:

var pageNum= 2;

nextLink = http://mydomain.com/?paged=1 

nextLink = nextLink.replace(/\/?paged=[0-9]?/, 'paged='+ pageNum);

我得到了

nextLink = 'http://mydomain.com/?paged=2';

但是,如果我去:

var pageNum= 12;

nextLink = http://mydomain.com/?paged=10 

nextLink = nextLink.replace(/\/?paged=[0-9]?/, 'paged='+ pageNum);

我得到了

netLink = 'http://mydomain.com/?paged=120'; 

我想要的时候:

nextLink = 'http://mydomain.com/?paged=12';

那么,我如何使用两位数字(11,12,13,14等)并将其替换为pageNum变量(可以是一位和两位数字)。

感谢'!小号

2 个答案:

答案 0 :(得分:4)

有两种方法可以为2位数字编写正则表达式检查,每种方法都有自己的目标:

[0-9]+

表示1位或更多位数字;

\d\d

正好表示2位数,也适用于另一个基数的数字(如Hex);

[1-9][0-9]

表示10到99之间的任何数字。

[1-9][0-9]?

表示1到99之间的任何数字。

最佳选择取决于您是否还需要支持三位数字,如果您需要支持页面0.如果您需要三位数,您可以使用Avinash的解决方案。如果你只想要那些有两位数的人,请选择[1-9] [0-9]。如果你想要单个和两个数字,请使用我的第四个解决方案。

答案 1 :(得分:2)

您的代码将是,

nextLink = nextLink.replace(/paged=[0-9]+/, 'paged='+ pageNum);

您未能将+,符号表示一次或多次,以便匹配字符串paged=后面的一个或多个数字。并且还删除进行最短匹配的?量词。

DEMO