javascript regexp,从特定类型的url中选择
我正在使用javascript制作一个url过滤器 我从url获取一个参数javascript regexp,从特定类型的url中选择,javascript,regex,url,select,Javascript,Regex,Url,Select,我正在使用javascript制作一个url过滤器 我从url获取一个参数 parameter 1 = /name/123 //description /text/number parameter 2 = /name/name/121 //description /text/text/number var filter = /[/a-z][/][0-9]/; if(filter.test(page) == true){ //do code; } 我让它选择了一个参数1,但它也选择了参数2
parameter 1 = /name/123
//description /text/number
parameter 2 = /name/name/121
//description /text/text/number
var filter = /[/a-z][/][0-9]/;
if(filter.test(page) == true){
//do code;
}
我让它选择了一个参数1,但它也选择了参数2
我应该修复什么来分别选择唯一的参数1或参数2
谢谢。试试这个:
var filter = /^\/[^/]+\/\d+$/;
// or
var filter = /^\/[a-z]+\/\d+$/i;
也就是说,您可以在以下方面进行匹配:
^ beginning of string
\/ a / (escaped for the regex literal)
[^/]+ one or more non-slash characters in a row, or
[a-z]+ one or more letters in a row
\/ another slash
\d+ one or more digits
$ end of string
还要注意,如果测试不需要==true部分,您可以说:
if(filter.test(page)){
您使用的模式无效,它只匹配一个字符后跟/后跟一个数字 尝试使用以下模式: 图案 输入 输出
我稍微修改了nnnnnn的版本,添加了一个量词:这个模式{n次}给出了/^\/[^/]+{n}\/\d+$/。有关更多详细信息,请参阅
function createRegex(n) {
return new RegExp(
'^(\\/[^/]+){' + n + '}\\/\\d+$'
);
}
var twoParts = createRegex(2);
twoParts.test('/part1/part2/123'); // true
twoParts.test('/part1/part2/part3/123'); // false
要将url拆分为多个部分,请执行以下操作:
var parts = '/part1/part2/123'.match(/[^/]+/g);
var part1 = parts[0]; // "part1"
var part2 = parts[1]; // "part2"
var part3 = parts[2]; // "123"
但是要小心,如果失败,match将返回null。您使用的模式无效,它只匹配一个字符后跟一个数字
1. false
2. true
function createRegex(n) {
return new RegExp(
'^(\\/[^/]+){' + n + '}\\/\\d+$'
);
}
var twoParts = createRegex(2);
twoParts.test('/part1/part2/123'); // true
twoParts.test('/part1/part2/part3/123'); // false
var parts = '/part1/part2/123'.match(/[^/]+/g);
var part1 = parts[0]; // "part1"
var part2 = parts[1]; // "part2"
var part3 = parts[2]; // "123"