Javascript 如果符合条件,则匹配整个单词

Javascript 如果符合条件,则匹配整个单词,javascript,Javascript,如何仅基于这一个条件获取整个example.com链接?我只需要链接,不需要文本 因此,预期的结果将是example.com/?isExample=true我发现这样对我最有效: let str = 'text text example.com/?isExample=true more text' if (str.match(/.com/i)) { ... } 我发现这样对我最有效: let str = 'text text example.com/?isExample=true more

如何仅基于这一个条件获取整个example.com链接?我只需要链接,不需要文本


因此,预期的结果将是
example.com/?isExample=true

我发现这样对我最有效:

let str = 'text text example.com/?isExample=true more text'

if (str.match(/.com/i)) {
 ...
}

我发现这样对我最有效:

let str = 'text text example.com/?isExample=true more text'

if (str.match(/.com/i)) {
 ...
}

这里有一个解决方案:使用一个积极的前瞻断言,
(?=…[此处的条件]…)
,然后是要匹配的整个模式

let str='text-text-example.com/?isExample=true-more-text'

log(str.match(/(?=\S*\.com)\S+/i))这里有一个解决方案:使用积极的前瞻断言,
(?=…[此处的条件]…)
后跟要匹配的整个模式

let str='text-text-example.com/?isExample=true-more-text'

log(str.match(/(?=\S*\.com)\S+/i))您可以使用
\S+\.com。\S+

let re=new RegExp(/\S+\.com.\S+/),
str=“text-text-example.com/?isExample=true-more-text”,
结果=str.match(re);

控制台日志(结果)您可以使用
\S+\.com。\S+

let re=new RegExp(/\S+\.com.\S+/),
str=“text-text-example.com/?isExample=true-more-text”,
结果=str.match(re);

控制台日志(结果)您可以使用以下正则表达式

let str='text text-text-example.co.in/?isExample=true&y=3更多文本'
设res=str.match(/\w+(\.[a-z]{2,3})+\/?\??(\w+=\w+&?*/)[0];

console.log(res)
您可以使用以下正则表达式

let str='text text-text-example.co.in/?isExample=true&y=3更多文本'
设res=str.match(/\w+(\.[a-z]{2,3})+\/?\??(\w+=\w+&?*/)[0];

console.log(res)
或使用现有库,例如linkify js或twitter text(from),或使用现有库,例如linkify js或twitter text(from)
.co.in
.uk
等?@AZ_u.我认为这不在问题的范围之内。显然,这种模式不会匹配所有可能的域名。虽然如果这些特定领域是您需求的一部分,您当然可以使用
/(?=\S*(\.com\\.co\.in\\.uk))\S+/i
,我同意这一点。但是为什么不简单的
/\S*\.com\S*/
?为什么要向前看?@AZ_u我同意,这是一个更简单的解决方案,这可能就是我在自己的代码中针对这个特定情况所使用的方法。然而,我最初把这个问题理解为一个更一般的问题——给定模式,
x
y
,只有当它们也满足
y
时,如何匹配
x
的实例,在这种情况下,您会使用
(?=zy)x
,其中
z
x
的前缀。即使OP的自我回答表明他/她能够在没有高级正则表达式的情况下解决这个问题,这个答案可能对未来的读者仍然有帮助,因为它引入了lookaheads作为一个概念,将两种模式叠加在一起。那么
.co.in
.uk
等呢?@AZ_u我认为这不在问题的范围之内。显然,这种模式不会匹配所有可能的域名。虽然如果这些特定领域是您需求的一部分,您当然可以使用
/(?=\S*(\.com\\.co\.in\\.uk))\S+/i
,我同意这一点。但是为什么不简单的
/\S*\.com\S*/
?为什么要向前看?@AZ_u我同意,这是一个更简单的解决方案,这可能就是我在自己的代码中针对这个特定情况所使用的方法。然而,我最初把这个问题理解为一个更一般的问题——给定模式,
x
y
,只有当它们也满足
y
时,如何匹配
x
的实例,在这种情况下,您会使用
(?=zy)x
,其中
z
x
的前缀。即使OP的自我回答表明他/她能够在没有高级正则表达式的情况下解决这个问题,这个回答对未来的读者仍然有帮助,因为它引入了lookaheads作为一个将两个模式叠加在一起的概念。