首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js在safari下是否有方法可以实现正则表达式的negative lookbehind?

在Safari浏览器中,JavaScript正则表达式不支持负向零宽度断言(negative lookbehind)。但是,您可以使用其他方法来实现类似的功能。

例如,您可以使用正向零宽度断言(positive lookahead)和负向零宽度断言(negative lookahead)来实现类似的功能。以下是一个示例:

代码语言:javascript
复制
const regex = /(?<!abc)def/;
const str = "abcdef";

// 使用正向零宽度断言和负向零宽度断言来实现负向零宽度查找
const regex2 = /(?<!abc)def|def(?!abc)/;

console.log(regex.test(str)); // 输出:false
console.log(regex2.test(str)); // 输出:true

在这个例子中,我们使用了正向零宽度断言和负向零宽度断言来实现类似负向零宽度查找的功能。这样,我们就可以在Safari浏览器中使用这种方法来实现正则表达式的负向零宽度查找。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ES2018新特性学习

Asynchronous Iteration (异步迭代器) 正则表达式 dotAll 模式 dotAll 是一个新正则表达式修饰符,目前 JS 拥有的修饰符: g -> global i ->...这种引用既可以正则表达式内部,也可以正则表达式外部。 捕获组两种形式,一种是普通捕获组,另一种是命名捕获组。...pattern) 零宽反向否定断言(zero-width negative lookbehind assertion) 正向断言(lookahead) 当前位置后面的字符串应该满足断言,但是并不捕获,在当前...解决方案 ES2018 中使用 \p{…} 和 \P{…} 进行 Unicode 属性转义,正则表达式中使用 u 进行标记。 \p{…} 内,可以以键值对方式设置需要匹配属性,而非具体内容。...如上所述,我们必须返回迭代器结果 promise,因为迭代器方法返回时,迭代器下一个值和 done 状态可能未知。

61610

正则表达式笔记

点号(.)正则表达式中具有特殊意义,它可以代表任何字符。...我们把像点号(.)这类正则表达式中具有特殊意义字符称为元字符(Metacharacter),正因为了它们才成就了正则表达式强大模糊匹配能力。...…) 否定逆序环视(Negative Lookbehind) 成功如果左边不能够匹配 字符转译序列 我们已经学习了好多正则表达式元字符,它们正则表达式中有特殊意义,而丧失了它们本来意义。...…) 否定逆序环视(Negative Lookbehind) 成功如果左边不能够匹配 字符组转译序列 还记得我们字符组这一节中是如何匹配数字吗?...事实上,我们使用正则表达式时候经常要在准确性和简单性之间求得平衡,如果我们只是想简单文件中查找一这样时刻,我们完全可以用上面的表达式,但是有些时候,我们必须更为精确匹配时刻,那到底该怎么匹配呢

97120

正则表达式快速入门

重复匹配 上面给例子中就已经给出了重复概念了,了重复概念,正则表达式才更加简洁高效,下面是一些有关重复限定符 限定符 意义 * 重复 0 次或更多次 + 重复 1 次或更多次 ?...分组 之前已经介绍了单个字符重复,如果想让多个字符重复的话,我们可以用 () 将想要重复字符括起来让它变成一个分组或者子表达式,然后括号后面就可以像之前那样用重复限定符了。...后向引用 前面用 () 实现了多个字符重复,直接紧跟在后面加上限定符就行了,如果我们不想重复匹配多次,而是要在后面引用这次匹配到内容该怎么办呢,我们可以用后向引用 每次用 () 进行一次分组时,(...=) 匹配 不包含属性简单HTML标签内⾥内容,好好思考一,上面这个表达式可以将 RE` 中 RE 给匹配出来。...贪婪与懒惰匹配 正则表达式跟人一样,都是贪婪,所以当可重复限定符时,正则表达式会匹配最长那个结果,有时我们不想让他变得那么贪婪,就可以用懒惰匹配,也就是限定符后面加个 ?

57120

一文带你读懂:Google 和 JDK 正则表达式引擎何不同

正则表达式基础,大家可以通过菜鸟教程(https://www.runoob.com/regexp/regexp-intro.html)复习一概念和正则语法~~ 问题凸显 最近同事反馈某个正则表达式相关网站上面...回溯实现策略 回溯法,又称试探法,是常用,基本优选搜索方法。常用于解决这一类问题:给定一定约束条件 F(该约束条件常用于后面的剪枝)求问题一个解或者所有解。...最坏情况,java.util.regex匹配器可能永远运行,或者超过可用堆栈空间而失败;这在 RE2/J 中永远不会发生。...1)Lookaround包括Lookahead和Lookbehind两种匹配模式 (Lookahead检测是后缀,而Lookbehind检测是前缀,它们 Positive、Negative 两种匹配方式...如果说你系统是内部系统,确认不会出现 SQL 注入类似的安全问题,使用 JDK 原生正则表达式引擎无疑让你正则表达式支持范围更强大; 如果说你系统是商业化系统,对安全问题是否看重,那么使用 Google

1.2K30

正则表达式梳理和练习笔记

MDN | Javascript 正则表达式介绍 正则表达式(regular expression)描述了一种字符串匹配模式(pattern),可以用来检查一个串是否含有某种子串、将匹配子串替换或者从某个串中取出符合某个条件子串等...创建一个正则表达式节 你可以使用以下两种方法之一构建一个正则表达式: 使用一个正则表达式字面量,其由包含在斜杠之间模式组成,如下所示: var re = /ab+c/; 使用正则表达式字面量为正则表达式提供了脚本加载后编译...当正则表达式保持不变时,使用此方法可获得更好性能。...一个紧跟着yx (?<!y)x Negative lookbehind assertion: Matches x only if x is not preceded by y....---- 整理一如果转换成语义化编程方式 ( 由于我个人记性不行,所以打算后面写个语义化生成正则小函数 ) # PHP语法 ( 也可以扩展到JS中 用JSON方式递归生成 ) '^' : beginWith

47130

正则表达式子组模式

五、前向逆探测(Negative Lookahead) 与前向探测类似,只不过子组中表达式必须不满足才行。它构造方法为(?!): '#\d*(?!...六、后向探测(Lookbehind) 与前向探测类似,后向探测只不过是以当前点为准,向前读入内容。后向探测构造方法为(?<=): '#(?...*匹配时,'EUR '早已被读过了。 不过这并不意味着后向探测会消耗内容,只是因为我们并没有正则表达式中匹配'EUR '而已。如果你兴趣,可以尝试下面的表达式: '#EUR (?...<=EUR)\d*#' 这样,匹配出来结果就是'EUR 100'了。 七、后向逆探测(Negative Lookbehind) 与后向探测类似,只不过子组内表达式必须不匹配。...九、子组重复利用 利用下面的方式我们可以重复利用已经正则表达式中出现子组: '#(\w+) (?1)#' 这个正则表达式会匹配'foo bar'。不过需要注意是,重用子组并不会被捕获。

1.6K120

正则零宽导致iOS端uni-app报错:连接服务器超时,点击重试

Warn Error SyntaxError: Invalid regular expression: invalid group specifier name 原因: iOS 不支持零宽断言,如果正则表达式中包含零宽断言..., 安卓手机上正常 , 但是 iOS 上就会报错。.../g, '*') 解决: 不使用零宽断言,可以使用截取&拼接字符串方式,如果实现比较复杂效果可以自己封装一个方法。 例如:我要截取银行卡后四位,前面加星号。...扩展:正则零宽断言 正则位置匹配: 零宽:只匹配位置,匹配过程中,不占用字符,所以被称为零宽。 先行:正则引擎扫描字符时候,从左往右扫描,匹配扫描指针未扫描过字符,先于指针,故称先行。...<=M\.)sin/g); // ["sin"] 复制代码 第二个 sin 会匹配,因为它前面有 pattern 零宽负向后行断言,又称负向向后查找(negative lookbehind) (?<!

82971

ES2018

:点号通配模式,在此模式,点号可以匹配任意字符(默认点号只能匹配除换行符外任意字符) RegExp Lookbehind Assertions:肯定逆序环视,支持向后看 RegExp named capture...把段落分割成逻辑行,使得^和$可以匹配每一行相应位置,而不是整个串开始和结束位置 RegExp Lookbehind Assertions 正则环视(lookaround)相关一个特性,环视特点是不匹配任何字符...:否定逆序环视(Negative lookbehind assertions),子表达式不能匹配左侧文本时才成功匹配 一种向后看能力,典型应用场景如下: // 从'$10.53'提取10.53,即捕获左侧是...Unicode标准来,定义PropertyAliases.txt、ropertyValueAliases.txt,布尔值属性定义UTS18 RL1.2 喜报,Emoji问题也终于终极解决方案了:...这些语言可能看起来不像JS,但是它们仍可以无缝嵌入到JS中并与JS其它语言特性智能交互。我不知道这一特性将会带领们走向何方,但它蕴藏着无限可能性,这令我感到异常兴奋!

84820

你可能错过现代 JavaScript 特性

所以本文中,我收集了一些现代 JavaScript 特性,这些特性首次发布时并没有带来太多关注。其中一些只是编码质量提高,而另外一些确实很方便,可以减少很多代码量。... JS 世界中,这些领域有点小众,但在网络和某些文件格式中却很常见。现在你可以用语法 0o 处理八进制。...ES2018 强大正则表达式 ES2018引入了一整套正则表达式特性: Lookbehind 匹配项(前向匹配) 支持它运行时中,你现在可以正则表达式来进行前向匹配。...abc) 6 不幸是,目前还没有什么方法可以为较旧浏览器支持新后向语法,所以你目前只能在 Node 上用它。...你可以命名捕获组 正则表达式真正强大功能是能够挑选出子匹配项,并用它们进行一些简单解析。

45420

第二章 正则表达式位置匹配攻略

第二章 正则表达式位置匹配攻略 正则表达式是匹配模式,要么匹配字符,要么匹配位置。请记住这句话。 然而大部分人学习正则时,对于匹配位置重视程度没有那么高。 本章讲讲正则匹配位置总总。...$(美元符号)匹配结尾,多行匹配中匹配行结尾。 比如我们把字符串开头和结尾用”#”替换(位置可以替换成字符!)...ES6中,还支持positive lookbehindnegative lookbehind。 具体是(?<=p)和(?<!p)。 也有书上把这四个东西,翻译成环视,即看看右边或看看左边。...那么,我们就来挑战一。看看我们对位置理解是否深刻。 4.3.1 简化 不考虑“但必须至少包括2种字符”这一条件。...我们可以容易写出: var reg = /^[0-9A-Za-z]{6,12}$/; 4.3.2 判断是否包含有某一种字符 假设,要求必须包含数字,怎么办?此时我们可以使用(?

2K100

正则表达式杂记:入门笔记速查,进阶:组属性,vim magic 与练习场地

实现引用 同一个正则表达式中,我们可以直接用索引引用组(\1),也可以用名字引用定义了组名组(\k)。...(\d\d)\k 组特殊结构 了组,我们可以实现很多 Group Construction ,首先以 Positive Lookahead 为例。...=bar) 再举个例子, Positive LookbehindNegative Lookbehind ,对于字符串barfoo,boofoo,我们想找出foo: •这个foo必须紧紧靠在bar后...中 vim 插件,块快捷键 Ctrl+v 与粘贴键冲突),如下图(编辑模式:2,3s/^/#/g)。...觉得文章不错的话,可以点击“在看”支持我一任何批评建议或者合作事宜,可以给我发邮件 piperliu@qq.com[2] ,或者关注公众Piper蛋窝,回复「微信」来加我微信联系~ ?

1.1K20

正则表达式必知必会 - 环视

使用向前查看时候,正则表达式解析器将向前查看并处理 : 匹配,但不会把它包括最终结果里。模式 \w+?(:) 查找文本并包含 :,模式 \w+?(?...向前查看和向后查看其实是返回结果,只不过结果永远都是零长度字符串。因此,环视操作有时也被称为零宽度(zero-width)匹配操作。任何子表达式都可以转换为向前查看表达式,只要在其之前加上一个 ?...同一个搜索模式里可以使用多个向前查看表达式,出现位置没有任何限制。 三、向后查看         正如刚看到那样,?= 是向前查看,它查看已匹配文本之后内容,但不消耗这些内容。因此,?...否定式向前查看(negative lookahead)会向前查看不匹配指定模式文本,否定式向后查看(negative lookbehind)则向后查看不匹配指定模式文本。要想否定环视操作,用 !...否定向后查找         一般来说,凡是支持向前查看正则表达式实现也都支持肯定式向前查看和否定式向前查看。类似地,凡是支持向后查看正则表达式实现也都支持肯定式向后查看和否定式向后查看。

23830

91.精读《正则 ES2018》

Lookbehind assertions 完整断言定义分为:正/负向断言 与 先/后行断言 笛卡尔积组合, ES2018 之前仅支持先行断言,现在终于支持了后行断言。...可以匹配任何字符,但却无法匹配换行符。因此聪明开发者们用 [\w\W] 巧妙解决了这个问题。 然而这终究是个设计缺陷, ES2018 支持了 /s 模式,这个模式,.... /u 模式可以用 \p{Number} 匹配所有数字: u 修饰符可以识别所有大于 0xFFFF Unicode 字符。...同时 u 修饰符还会改变以下正则表达式行为: 点字符原本支持单字符,但在 u 模式可以匹配大于 0xFFFF Unicode 字符。...基本上, u 修饰符模式,所有 Unicode 字符都可以被正确解读,而在 ES2018,又新增了一些 u 模式匹配集合来匹配一些常见字符,比如 \p{Number} 来匹配 ¼。

37620

从ES6到ES10新特性万字大总结(不得不收藏)

这种语言万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准实现和扩展。 历史版本 至发稿日为止九个ECMA-262版本发表。...pattern) 零宽反向否定断言(zero-width negative lookbehind assertion) ES9之前,JavaScript 正则表达式,只支持正向断言。...,但是ES10之后,我们可以实现这个功能。...所以全局环境,我们: globalThis === this // true import() 静态import 语句用于导入由另一个模块导出绑定。...无论是否声明了 严格模式,导入模块都运行在严格模式浏览器中,import 语句只能在声明了 type="module" script 标签中使用。

2K20

一文掌握开发利器:正则表达式

<=b)a positive lookbehind,后行断言,a 只有 b 后面才匹配 (?<!...b)a negative lookbehind,后行否定断言,a 只有不在 b 后面才匹配 1.6 量词和分支 字符 说明 a* 0 or more a+ 1 or more a?...回溯法通常用最简单递归方法实现反复重复上述步骤后可能出现两种情况: 找到一个可能存在正确答案 尝试了所有可能分步方法后宣告该问题没有答案 最坏情况,回溯法会导致一次复杂度为指数时间计算...答案是否。 让我们还是看回最初例子,/ab{1,3}c/g 去匹配 abbc。接下来,我们再把正则修改一,改成/ab{1,3}?...结语 曾经一次因为写一个性能恶劣正则表达式,导致代码执行过程因为性能问题挂掉。

1.2K130121
领券