我有以下正则表达式模式
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;
似乎没有任何作用..
您是否尝试过const pattern = /^\/(abc|def|something\/thisone\/[0-9a-zA-Z]*){1}/i;
?
此[0-9a-zA-Z]*
应该匹配任意数量的数字和英文字母。
您必须明确指出它与/something/thisone/
之后的至少一个字符匹配。
[如果允许数字作为字符串的一部分,则此正则表达式将执行:
\/something\/thisone(\/[a-z0-9]+)+
看这里:regex101
如果以下字符串仅由字母或数字组成,则该字符串将:
\/something\/thisone(\/([a-z]+|[0-9]+))+
尝试这个简单的正则表达式。
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));