【问题标题】:Match Both text with Regex Lookahead on javascript在 javascript 上将两个文本与 Regex Lookahead 匹配
【发布时间】:2017-06-23 05:59:30
【问题描述】:

使用这个正则表达式:

/lorem(?=[\s,;\[\]\(\)]*ipsum)/ig

它匹配后跟“ipsum”的“lorem”,有/没有“,;][)(”个字符。

示例文本:Lorem ipsum dolor sit amet,Lorem; ipsum dolor sit amet, Lorem,; (ipsum) dolor sit amet, Lorem dolor sit amet, Lorem amet。

如果我使用 ?: 而不是 ?= 它匹配从“lorem”到“ipsum”结尾的整个文本,例如“Lorem ipsum”、“Lorem; ipsum", "Lorem,; (ipsum" 等...。

现在我想正则表达式匹配“lorem”和“ipsum”而不匹配“,;][)(”字符。我如何修改表达式来做到这一点?

【问题讨论】:

  • 是否应该在不同的组中匹配“lorem”和“ipsum”?
  • 是的,但似乎 javascript 不支持前瞻中的分组。我说的对吗?

标签: javascript lookahead


【解决方案1】:
/lorem(?=[\s,;\[\]\(\)]*(ipsum))/gmi

演示here

【讨论】:

  • demo 中的@Vasdu 它适用于 php 和 python,但不适用于 javascript。为什么?
  • (lorem)(?:[\s,;[]()]*)(ipsum) 为js试试这个
  • 有 2 个组,非捕获组是完整匹配的一部分,您可以使用其他 2 个匹配 lorem & ipsum 的组
  • 我如何在js上使用其他2组?可以给我一个示例代码吗?
  • jsfiddle.net/wf84czxy 第 1 组是“lorem”,第 2 组是“ipsum”,第 0 组是完全匹配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 2016-02-02
  • 2010-09-10
  • 2012-02-22
  • 1970-01-01
相关资源
最近更新 更多