用于使多个条件匹配特定URL的正则表达式

问题描述 投票:0回答:3

我有以下正则表达式模式

const pattern = /^\/(abc|def|something\/thisone|en|ppp){1}/i;

const mat = pattern.exec(myURL);

这里我如何更改上述模式,使其不匹配something/thisone,但是当它后面跟着任何参数时,如下:something/thisone/<anystring/number> ..?

尝试:

const pattern = /^\/(abc|def|something\/thisone\/.*|en|ppp){1}/i;

const pattern = /^\/(abc|def|something\/thisone\/.+|en|ppp){1}/i;

似乎没有任何作用..

javascript regex reactjs
3个回答
0
投票

您是否尝试过const pattern = /^\/(abc|def|something\/thisone\/[0-9a-zA-Z]*){1}/i;

[0-9a-zA-Z]*应该匹配任意数量的数字和英文字母。


0
投票

您必须明确指出它与/something/thisone/之后的至少一个字符匹配。

[如果允许数字作为字符串的一部分,则此正则表达式将执行:

\/something\/thisone(\/[a-z0-9]+)+

看这里:regex101

如果以下字符串仅由字母或数字组成,则该字符串将:

\/something\/thisone(\/([a-z]+|[0-9]+))+

0
投票

尝试这个简单的正则表达式。

let regex = /.*something\/thisone\/.+/g

let string1 = 'something/thisone/acd';
let string2 = 'something/thisone/abc/';
let string3 = 'something/thisone';
let string4 = 'https://somedomain/something/thisone/123';

console.log(string1.match(regex));
console.log(string2.match(regex));
console.log(string3.match(regex));
console.log(string4.match(regex));
© www.soinside.com 2019 - 2024. All rights reserved.