Javascript 为什么正则表达式会忽略每个匹配中的最后一个字符

Javascript 为什么正则表达式会忽略每个匹配中的最后一个字符,javascript,regex,Javascript,Regex,除了忽略每个匹配中的最后一个字符外,bellow正则表达式工作正常 \d{4}\b.*?(?=[^:]\d{4}(?! ml| kg)( [A-Za-z]{2}| \d{1}-| 1H-| [A-Za-z0-9],[A-Za-z0-9]| \D{1}-)|$) 我的问题是: 如何将其更新为包括每个匹配中的最后一个字符 下面是数据示例: 前瞻中的[^::::模式要求在匹配的前四位之前使用除:以外的字符 您需要使用lookback(?此处: \d{4}\b.*(?=(?)? 请参阅。我重写了一点您

除了忽略每个匹配中的最后一个字符外,bellow正则表达式工作正常

\d{4}\b.*?(?=[^:]\d{4}(?! ml| kg)( [A-Za-z]{2}| \d{1}-| 1H-| [A-Za-z0-9],[A-Za-z0-9]| \D{1}-)|$)
我的问题是: 如何将其更新为包括每个匹配中的最后一个字符

下面是数据示例:

前瞻中的
[^::::
模式要求在匹配的前四位之前使用除
以外的字符

您需要使用lookback
(?此处:

\d{4}\b.*(?=(?)?

请参阅。

我重写了一点您的正则表达式以匹配

  • 4位数字
  • 然后是您的特殊字符和无限[A-A]
  • 然后进行正向前瞻,以匹配所有内容,直到再次看到开始序列或文件结尾
我删除了一些您可以在需要时再次添加的内容,但它适用于您的数据集

\d{4}([A-A]+).+?(?=\d{4}([A-A]+)|$)

以下是基于您的数据集的示例:

你能举例说明它应该匹配什么和它正在匹配什么吗?嗨,MK01111000,请为失败案例添加一个例子,添加输入、输出和你的预期结果。仅供参考
{1}
从来都不需要。每个模式匹配一次,除非你有其他的量词。我怀疑前瞻匹配的是最后一个字符。因此,regexp匹配之前的所有字符。您好Barmar和IngoSteinke,我添加了一个实现此目的的示例。谢谢@Wiktor!