我正在尝试创建一个匹配 !next
的 JS 正则表达式,无论是在行的开头还是。
目前我正在使用有效的 /(^!next|!next$)/i
。然而,这显然读起来有点难看而且不干,所以我希望改进。
我最接近的是这个:
/(?=!next)[^$]/i
但这实际上只匹配所有内容(现在我突然想到,我记错了 ^
在字符类中的工作方式,所以这个解决方案无论如何都是垃圾)。
我已经搜索了网络和 SO,但我完全被难住了。
最佳答案
这是一个有趣的例子,使用正则表达式条件:
/(^)?!next(?(1)|$)/gm
它的工作原理是捕获行首 anchor ,如果不存在,则匹配行尾 anchor 。
不过,就我个人而言,我仍然赞成您的解决方案而不是我的,因为对于那些对正则表达式没有非常透彻了解的人来说,它更具可读性(并且更便携)。
为了增加乐趣,这是另一个版本(比您最初的版本更丑陋):
/!next(?:(?<=^.{5})|(?=$))/gm
不过,我仍然建议坚持使用经典交替。
最后,一个在 JS 中工作的(不,真的):
/(?:^|(?=.{5}$))!next/gm
关于javascript - 如何匹配行首或行尾的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39928952/