作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试匹配不符合模式name (CA)
或barbaz (UK)
的字符串。我似乎已经使用答案解决了问题here ,但这就是我开始的地方,我想知道为什么它不起作用:
var r1 = /^.+(?!\([A-Z]{2}\))$/;
r1.test('foo'); //true
r1.test('foo (US)'); //whoops -also true
从读取否定的前瞻 doc我希望任何后面不跟例如的字符串(JP)
将导致匹配,而 后跟的任何内容,例如(DE)
会失败。 (仅满足前者)。
我认为.+
可能会“消耗”所有内容,使前瞻无效,所以我尝试了
r2 = /^[^()]+(?!\([A-Z]+\))$/;
r2.test('name (US)'); //false
r2.test('foo('); //whoops -also false
但是我需要诸如 foo(
之类的东西来匹配。
为什么我的第一次尝试失败了?
最佳答案
在您的第一个表达式中,.+
消耗整个字符串,然后测试前瞻 - 它不匹配,因为没有剩余字符。为了实现您的目标,您可以使用 /^(?!.+\([A-Z]{2}\)$).+$/
- 首先检查不需要的构造是否存在,然后匹配。
参见https://regex101.com/r/aG7xZ0/1与您的 sample
关于javascript - 否定前瞻混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37901429/
我有一个看起来像这样的字符串: 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(/(?
我是一名优秀的程序员,十分优秀!