Javascript RegEx报价

时间:2011-06-29 12:10:15

标签: javascript regex

我无法使这个Javascript正则表达式工作。 我想要的是找到一个以@"开头的字符,其中间有任何字符,以"结尾。我还需要一个单引号。

对我来说棘手的部分是,它不能以@"开头并以"结尾,因为它正在查看的字符串可能看起来像[UIImage imageNamed:@"glass-round-red-green-button.png"]

到目前为止我所拥有的就是这个。

regex: new RegExp('\\@"?\\w+\\b"*', 'g')

3 个答案:

答案 0 :(得分:9)

试试这个正则表达式:

/@(["'])[^]*?\1/g

解释:

  • @(["'])匹配@"@'
  • [^]*?匹配任意字符([^]包含与.相对的不包含换行符的所有字符),但是以非贪婪的方式
  • \1匹配与(["'])
  • 匹配的相同字符

使用literal RegExp syntax /…/更方便。请注意,这不会将\"之类的序列转义为帐号。

答案 1 :(得分:0)

正则表达式将是: var regex = /@"[^"]*"/g;

答案 2 :(得分:0)

Gumbo的正则表达式非常好,但它无法检测转义引号(例如\"\\\"等)。解决这个问题的正则表达式如下:

/@(["'])[^]*?[^\\](?:\\\\)*\1|@""|@''/g

解释(继续Gumbo的解释):

  • [^\\]匹配最接近的字符,该字符是不是反斜杠的结束引号(用于锚定反斜杠计数检查)。
  • (?:\\\\)*仅在反斜杠的数量是2的倍数(包括零)时匹配,以便不计算转义的反斜杠。
  • |@""检查是否有空双引号,因为[^\\]要求字符串中至少有一个字符才能生效。
  • |@''检查是否有空单引号。