0

我的字符串本质上与'foo = "bar"'. 现在,当我测试这些字符串是否通过某个正则表达式时,我正在测试 'bar' 周围的引号["|']?,使该区域中的完整 RegEx 类似于["|']?(\w+)["|']?(为了便于阅读,我删除了不相关的表达式部分)。

这意味着几件事:

  • 单词周围的引号可以是双引号、单引号或不存在。
  • 不管它们是什么,它们都不是“链接”的。如果在左侧使用双引号而在右侧没有引号,这仍然会通过,等等。

我的目标是根据第一个报价匹配第二个报价。我非常想完全用 RegEx 来实现它,尽管我知道我正在接近它所能做的极限(就 JavaScript 实现而言)。我对前瞻/后视非常熟悉,但据我了解,这些只有在引述感人的情况下才有意义。我希望我理解错误。

PS:我只担心现代浏览器,所以 IE<10 支持不是问题。

PPS:我提到我想用 RegEx 来做这件事。请节省自己的精力,不要给出替代方案。“你不能这样做”就足够了。

4

1 回答 1

2

你可以写:

/(["'])\w+\1/

\1只会匹配与第一个捕获组( (["'])) 捕获的字符串相同的字符串。

请注意,我|字符类 ["']中删除了管道字符,因为它似乎是一个错误:管道字符在字符类中没有任何特殊含义。["|']仅当您希望能够匹配时才正确,例如|bar|.

于 2012-08-07T13:31:32.377 回答