在javascript正则表达式中检查“this AND that WITHOUT this”的方法

Way in javascript regex to check for "this AND that WITHOUT this"

本文关键字:this WITHOUT that 方法 AND 正则表达式 检查 javascript      更新时间:2023-09-26

我正在努力理解如何做到这一点。我正在做一个正则检查,看看是否"移动"answers"Safari"存在,所以我知道如果它是iOS,但问题是,Android使用移动Safari在某些版本以及。所以我输入:

(?=.*Mobile)(?=.*Safari).*

但是现在我如何添加"without Android in the string" ?我试图做一个"不跟随"(?!.*Android)(?=.*Mobile)(?=.*Safari).*,但这仍然匹配,直到发现这不是我想要的。

为什么要使用正则表达式呢?

b.indexOf(a) != -1测试a是否在b中。
要测试a是否不是b中的,请使用b.indexOf(a) == -1

所以你的代码应该是这样的:
if((str.indexOf('Mobile') != -1 || str.indexOf('Safari') != -1) && str.indexOf('Android') == -1)

当然,如果你使用现有的浏览器嗅探库会更好…或者,如果你真的需要找出某个功能是否可用,使用代码来测试该功能,而不是检查特定的浏览器或浏览器版本。

很容易做到。只需添加一个锚点和一个否定的向前看:

re = /^(?=.*Mobile)(?=.*Safari)(?!.*Android).*/i;