【问题标题】:JavaScript: equivalent regex as PHPJavaScript:与 PHP 等效的正则表达式
【发布时间】:2014-03-10 20:24:33
【问题描述】:

我有一个正则表达式来查找 php 字符串中给定单词“on”的下一个单词:

(?<=\bon\s)(\w+)

它适用于 PHP,但对于 js,它会给出以下错误:

未捕获的 SyntaxError:无效的正则表达式:/(?

javascript 的等效正则表达式是什么?

【问题讨论】:

  • 去掉模式开头和结尾的'/'。
  • 我尝试删除“/”,但没有成功。
  • @Pakspul - 开头和结尾的 / 是 JS 正则表达式文字语法的一部分,而不是实际模式的一部分。

标签: javascript php regex


【解决方案1】:

(?&lt;=\bon\s) 是一个positive lookbehind。 PHP 的正则表达式引擎 (PCRE) 支持这些,但 JavaScript 的正则表达式引擎不支持。

虽然不可能编写完全相似的正则表达式,但您仍然可以使用以下正则表达式来实现:

\bon\s(\w+)

与原始正则表达式不同,\bon\s 使用字符。但是您仍然可以使用捕获组(\w+) 提取结果。

用法:

var str = 'foo on bar';
var matches = str.match(/\bon\s(\w+)/);
var result = matches[1] // bar

Fiddle

【讨论】:

  • @GaneshKunwar 嗯?我没有在这个答案中给出解决方案。我在解释为​​什么你的正则表达式不起作用。
  • 感谢您的回答,我正在寻找最佳解决方案。
【解决方案2】:

正如 Amal Murali 所解释的,Javascript 正则表达式没有等效项。但是你可以写:

\bon\s(\w+)

并提取第一个捕获组。

【讨论】:

  • 感谢卡西米尔的回答,但它给出了两个词,包括“开”。我需要在“开”后面加一个词。
  • @GaneshKunwar:这就是为什么您必须从匹配结果中提取捕获组的原因。看看这个话题:stackoverflow.com/questions/432493/…
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 2011-04-02
  • 2011-09-29
  • 1970-01-01
相关资源
最近更新 更多