js regex - 检查数字,可选择以/结尾

时间:2017-12-28 09:58:31

标签: javascript regex

我想检查网址是否采用以下模式:

以数字结尾:

www.example.com/projects/123

或可能以数字和/结尾:

www.example.com/projects/123/

我不知道用户是否要在网址末尾添加/

目前我所拥有的是:

var lastPart = window.location.pathname.substr(window.location.pathname.lastIndexOf('/')+1);

lastPart.match(/\d$/);

如果以数字结尾,则返回true。如果我这样做:

lastPart.match(/\d\/$/);

如果结尾带有true的数字,则会返回/。但是,我们无法确定用户是否会加入/

那么,我们怎样才能在结尾处写下以数字结尾的regex和可选的/

4 个答案:

答案 0 :(得分:2)

您可以在?之后使用/量词:

/\d+\/?$/

请参阅regex demo

<强>详情

  • \d+ - 1+位数
  • \/? - /
  • 的1或0次出现
  • $ - 字符串结尾。

JS演示:

&#13;
&#13;
var strs = ['www.example.com/projects/123', 'www.example.com/projects/123/', 'www.example.com/projects/abc'];
var rx = /\d+\/?$/;
for (var s of strs) {
  console.log(s, '=>', rx.test(s));
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

你可以这样做,并使/可选?

\d+\/?$

<强>解释

  • 匹配一个或多个数字\d+
  • 匹配可选的正斜杠\/?
  • 断言字符串$
  • 的结尾

var strings = [
    "www.example.com/projects/123",
    "www.example.com/projects/123/"
];

for (var i = 0; i < strings.length; i++) {
    console.log(/\d+\/?$/.test(strings[i]));
}

答案 2 :(得分:0)

尝试

/\d+(\/?)$/

解释

  • \d+将匹配一个或多个数字
  • (\/?)将匹配零个或一个/
  • $断言字符串结尾

例如

window.location.pathname.match( /\d+(\/?)$/ )

<强>演示

&#13;
&#13;
var regex = /\d+(\/?)$/;

var str1 = "www.example.com/projects/123";
var str2 = "www.example.com/projects/123/";
var badStr ="www.example.com/projects/as";

console.log( !!str1.match( regex ) );
console.log( !!str2.match( regex ) );
console.log( !!badStr.match( regex ) );
&#13;
&#13;
&#13;

答案 3 :(得分:0)

&#13;
&#13;
var string = 'www.example.com/projects/123/';
console.log(string.match(/\d+(\/?)$/));
var string = 'www.example.com/projects/123';
console.log(string.match(/\d+(\/?)$/));
&#13;
&#13;
&#13;