用于匹配abc.com.amp;abc.com/.*

regex for matching abc.com & abc.com/.*

本文关键字:abc com amp 用于      更新时间:2023-09-26

试图编写一个匹配以下所有输入的正则表达式

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 ||  '/.*/;

您可以尝试以下regex,

www.?-?('w+)*.abc.com

工作演示

试试这个:www(.|-)''w*.''w*.com([/]''w*)?

我假设您实际寻找的部分只是特定值的开关,因为您显示的开关的语法非常不正确。

你可以这样做:

/'/(xyz_first|xyz_second|xyz_third)/

我认为您试图将||用作"或",但正则表达式不是这样工作的。您使用单个管道|作为OR,但它是作用域的全局OR,因此您需要使用括号来确定作用域,除非您指的是这个或其他所有内容。

我希望这能有所帮助。

试试这个:/^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] ) );
}

给定您的原始正则表达式,看起来您希望匹配上面列出的任何正则表达式,只要它们包含xyz_,后跟单词之一:firstsecondthird(但根据您对@MT0的注释,而不是fourth等)。

正则表达式.*'/(xyz_first|xyz_second|xyz_third)('/.*)?将匹配任何域(abc.com以及www-test.abc.comexample.com)。但是它允许/及其之后的所有内容都是可选的。

你可以在这里看到这一点。

这意味着你得到:

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)

如果这不是你想要的,一定要更新你最初的问题,以尽可能具体地反映你想要(和不想要)匹配的内容。