尝试编写匹配以下所有输入的正则表达式
www.abc.com
www.abc.com/xyz_first
www.abc.com/xyz_second
www.abc.com/xyz_third
www-test.abc.com
www-test.abc.com/xyz_first
www-test.abc.com/xyz_second
www-test.abc.com/xyz_third
域名是www.abc.com。我在这里有以下内容,但它对我不起作用。我需要匹配上面的输入
var exp = /.*\/xyz_first || xyz_second || xyz_third || \/.*/;
答案 0 :(得分:0)
试试这个:/^www(?:-test)?\.abc\.com(?:\/(?:xyz_first|xyz_second|xyz_third))?$/
var inputs = [
'www.abc.com',
'www.abc.com/xyz_first',
'www.abc.com/xyz_second',
'www.abc.com/xyz_third',
'www-test.abc.com',
'www-test.abc.com/xyz_first',
'www-test.abc.com/xyz_second',
'www-test.abc.com/xyz_third'
];
var regex = /^www(?:-test)?\.abc\.com(?:\/(?:xyz_first|xyz_second|xyz_third))?$/;
for ( var i = 0; i < inputs.length; i++ )
{
console.log( inputs[i], regex.test( inputs[i] ) );
}
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个:www(。| - )\ w *。\ w * .com([/] \ w *)?
答案 3 :(得分:0)
我认为您实际需要的部分只是特定值的切换,因为您显示的开关具有非常不正确的语法。
你可以这样做:
/\/(xyz_first|xyz_second|xyz_third)/
我认为您正在尝试使用||作为'或',但这不是正则表达式的工作方式。您使用单个管道|
作为OR,但它是范围的OR全局,因此您需要使用括号范围,除非您指的是此或其他所有内容。
我希望有所帮助。
答案 4 :(得分:0)
鉴于您的原始正则表达式,看起来您希望匹配上面列出的任何内容,只要它们包含xyz_
后跟其中一个词:first
,second
或third
(但根据您对@ MT0的评论,而不是fourth
等)。
正则表达式.*\/(xyz_first|xyz_second|xyz_third)(\/.*)?
将匹配任何域(abc.com
以及www-test.abc.com
或example.com
)。但它允许/
及其后的所有内容都是可选的。
您可以在行动here中看到这一点。
这意味着你得到:
www.abc.com (no match)
www.abc.com/xyz_first (match)
www.abc.com/xyz_second (match)
www.abc.com/xyz_third (match)
www.abc.com/xyz_fourth (match)
www-test.abc.com (no match)
www-test.abc.com/xyz_first (match)
www-test.abc.com/xyz_second (match)
www-test.abc.com/xyz_third (match)
www-test.abc.com/xyz_fourth (match)
如果这不符合您的意图,请务必更新原始问题,以反映您希望(并且不想要)尽可能具体匹配的内容。