我想检查网址是否采用以下模式:
以数字结尾:
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
和可选的/
?
答案 0 :(得分:2)
您可以在?
之后使用/
量词:
/\d+\/?$/
请参阅regex demo。
<强>详情
\d+
- 1+位数\/?
- /
$
- 字符串结尾。 JS演示:
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;
答案 1 :(得分:1)
你可以这样做,并使/
可选?
:
<强>解释强>
\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+(\/?)$/ )
<强>演示强>
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;
答案 3 :(得分:0)
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;