问题标签 [negative-lookahead]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
508 浏览

regex - 正则表达式负前瞻

我需要修改这个正则表达式

符合这个...

不匹配这个...

试过这个,但没有运气

任何帮助将非常感激。

谢谢,艾尔。

0 投票
2 回答
1745 浏览

regex - 否定前瞻排除 html 标签

我正在尝试提出一个验证表达式,以防止用户将 html 或 javascript 标签输入到网页上的评论框中。

以下适用于单行文本:

..但由于点(。),它不允许任何换行符。如果我这样做:

它将允许多行,但表达式仅匹配第一行的“<”和“>”。我需要它来匹配任何行。

这工作正常:

但它很丑陋,我担心它会对某些用户造成破坏,因为它是一个多语言应用程序。

有任何想法吗?谢谢!

0 投票
1 回答
761 浏览

html - 正则表达式:h1 后跟 h2,中间没有 p

我需要一个正则表达式来确定 h1 标签后面是否跟着 h2 标签,中间没有任何段落元素。我尝试使用负前瞻,但它不起作用:

0 投票
2 回答
644 浏览

c# - C# 正则表达式:单行选项的负前瞻失败

我试图弄清楚为什么当“单行”选项打开时,带有负前瞻的正则表达式会失败。

示例(简化):

这:

如果单行选项打开,将失败,如果单行选项关闭,则将工作。例如,这有效(禁用单行选项):

我的理解是单行模式只允许点“。” 匹配新行,我不明白为什么它会影响上面的表达式。

谁能解释我在这里缺少什么?

:::::::::::::::::::::::

编辑: (?!.*) 是负面的展望,而不是捕获组。

如果单行模式打开,也会失败,所以看起来这不是一个贪婪问题。在正则表达式设计器(如 Expresso 或 Rad 正则表达式)中尝试:

单行关闭,它匹配(如预期):

单线开:

我不明白为什么它也不匹配第一个:它不包含第一个否定的向前看,所以它应该匹配表达式。

0 投票
2 回答
4454 浏览

java - 如何使负前瞻与行尾文本一起工作

我有一个如下的正则表达式:

使用 Java。我期待它会导致以下文本失败:

布拉帕拉格拉夫

因为在末尾找到了 paragraf

0 投票
3 回答
147 浏览

regex - 复杂(?)正则表达式:是表达式,但不是另一个

(如果你能做出更好的标题,请做)

你好,

我需要确保字符串与以下正则表达式匹配:

但鉴于此,我需要确保它与 Guid 不匹配,我的 Guid 匹配 reg-ex 看起来像这样(显然,这需要在合并结果中取反):

这里的最后一个要求是它们必须(如果可能的话)合并到一个表达式中。

0 投票
4 回答
10201 浏览

regex - 正则表达式匹配 {1,2,3,4} 的所有排列而不重复

我在 ruby​​ 中实现以下问题。

这是我想要的模式:

1234、1324、1432、1423、2341 等

即四位数字中的数字应该在[1-4]之间并且也应该是非重复的。

为了让您以简单的方式理解,我采用两位数模式,解决方案应为:12、21

即数字应该是 1 或 2 并且应该是非重复的。

为了确保它们不重复,我想使用 $1 作为我的第二个数字的条件,但它不起作用。

请帮助我并提前感谢。

0 投票
1 回答
103 浏览

regex - 需要特定的 Perl 正则表达式

有一个 perl 脚本需要处理给定目录中某种类型的所有文件。这些文件应该是以 .jup 结尾的文件,并且文件名中不应包含单词“TEMP_”。IE 它应该允许corrected.jup,但不允许TEMP_corrected.jup。

已经尝试过前瞻,但显然模式不正确:

不过,这会返回整个目录内容,包括具有任何扩展名的文件和包含 TEMP_ 的文件,例如文件 TEMP_corrected.jup。

0 投票
3 回答
219 浏览

regex - Perl 正则表达式使用否定的外观?似乎无法弄清楚如何正确地做到这一点

我试图让它与 perl 的正则表达式一起使用,但似乎无法弄清楚.. 我想获取任何具有“.website”的 url。在其中,除了像这样的(在“.website.”之前有“en”)

这是我希望由正则表达式返回的 url 示例,而上面的那个被拒绝

这是我的尝试.. 对我做错的任何建议表示赞赏

0 投票
3 回答
8961 浏览

php - 使用正则表达式跳过所有字符,直到使用负前瞻找到特定的字母序列

我对基本的正则表达式没问题,但是我对 pos/neg 向前/向后看有点迷茫。

我正在尝试从中提取 id #:

之前或之后可能有无限数量的“东西”。我一直在使用 The Regex Coach 来帮助调试我尝试过的内容,但我不再继续前进了......

到目前为止,我有这个:

它会处理 id 之后的任何额外属性,但我不知道如何忽略关键字和 id 之间的所有内容。我知道我不能去[^id]* 我相信我需要像这样使用负前瞻,(?!id)*但我想因为它是零宽度,它不会从那里向前移动。这也不起作用:

我一直在寻找示例,但没有找到任何示例。或者也许我有,但他们太过分了,我什至没有意识到他们是什么。

帮助!谢谢。

编辑:它也必须匹配 [keyword stuff=otherstuff],其中 id= 根本不存在,所以我必须在 id # 组上有一个 1 或 0。还有其他 [otherkeywords id=32] 我不想匹配。文档需要使用 preg_match_all 在整个文档中匹配多个 [keyword id=3]。