作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将某些文件类型(例如“.txt”)与不以特定子字符串结尾的非空根名称(例如“-bad”)匹配。有了负后视支持,解决方案很简单:
/.(?<!-bad)\.txt$/
但是,Safari 仍然 不支持负面回顾。啊。我如何使用负前瞻获得相同的结果?我想用一个正则表达式来做到这一点。请不要提供任何非正则表达式或多步骤解决方案。
下面的测试代码显示我很接近,但一个测试仍然失败。 😕
const regex = /.((?!-bad).{4})\.txt$/;
const tests = [
['this-file-bad.txt', false],
['this-file.txt', true],
['.txt', false],
['f.txt', true]
];
const results = tests.map(([input, expected]) => ((regex.test(input) === expected) ? '✅' : '❌') + input);
console.log(results.join('\n'));
最佳答案
你可以使用
^(?!.*\-bad\.txt$).+\.txt$
正则表达式如下:
^
)(?!...)
) 断言字符串不以“-bad.txt”结尾要同时检查多个文件是否足够(根据您在下面的评论,这可能会有所帮助)您可以这样写,例如:
^(?=.*\.(txt|pdf|csv|docx|html|jpeg)$)(?!.*\-bad\.\1$).+\.\1$
开头的正先行的唯一目的是捕获字符串末尾的文件后缀,以便可以在负先行和末尾使用反向引用。
关于javascript - 如何使用否定前瞻(NOT lookbehind)来匹配在特定位置不包含给定子字符串的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69469047/
我有一个看起来像这样的字符串: text = "9) 9 的文本\r\n10) 10 的文本\r\n11) 11 的文本\r\n12) ...\r\n123) 123 的文本" 我正在尝试将其拆分如下
下一代的 3D Tiles 前瞻 原文:Introducing 3D Tiles Next, Streaming Geospatial to the Metaverse 原文发布时间:2021年11月
我有一个使用正则表达式回顾的 string.replace() 函数。 myString.replace(/(?
我是一名优秀的程序员,十分优秀!