仅在存在开盘报价时才匹配收盘报价

时间:2012-08-07 13:29:18

标签: javascript regex

我的字符串与'foo = "bar"'类似。现在,当我测试这些字符串是否通过某个正则表达式时,我正在使用["|']?测试'bar'周围的引号,使得该区域中的完整RegEx与["|']?(\w+)["|']?({1}}一致我正在剥离不相关的表达部分以便于阅读。)

这意味着几件事:

  • 这个词的引号可以是双引号,单引号或不存在。
  • 无论它们是什么,它们都没有“联系”。如果在左边使用双引号而在右边没有引用,那么它仍将通过,等等。

我的目标是根据第一个匹配第二个引号。我非常希望用RegEx完全实现它,尽管我知道我正在接近它能做的极限(就JavaScript实现而言)。我对前瞻/后方非常熟悉,但据我所知,这些仅在报价触及时才有意义。我希望我不正确地理解它们。

P.S。:我只担心现代浏览器,因此IE< 10支持不是问题。

P.P.S:我提到我想用RegEx做这件事。请省力,不要另类。 “你不能这样做”就足够了。

1 个答案:

答案 0 :(得分:1)

你可以写:

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

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

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