我无法使这个Javascript正则表达式工作。
我想要的是找到一个以@"
开头的字符,其中间有任何字符,以"
结尾。我还需要一个单引号。
对我来说棘手的部分是,它不能以@"
开头并以"
结尾,因为它正在查看的字符串可能看起来像[UIImage imageNamed:@"glass-round-red-green-button.png"]
。
到目前为止我所拥有的就是这个。
regex: new RegExp('\\@"?\\w+\\b"*', 'g')
答案 0 :(得分:9)
试试这个正则表达式:
/@(["'])[^]*?\1/g
解释:
@(["'])
匹配@"
或@'
[^]*?
匹配任意字符([^]
包含与.
相对的不包含换行符的所有字符),但是以非贪婪的方式\1
匹配与(["'])
使用literal RegExp syntax /…/
更方便。请注意,这不会将\"
之类的序列转义为帐号。
答案 1 :(得分:0)
正则表达式将是:
var regex = /@"[^"]*"/g;
答案 2 :(得分:0)
Gumbo的正则表达式非常好,但它无法检测转义引号(例如\"
,\\\"
等)。解决这个问题的正则表达式如下:
/@(["'])[^]*?[^\\](?:\\\\)*\1|@""|@''/g
解释(继续Gumbo的解释):
[^\\]
匹配最接近的字符,该字符是不是反斜杠的结束引号(用于锚定反斜杠计数检查)。(?:\\\\)*
仅在反斜杠的数量是2的倍数(包括零)时匹配,以便不计算转义的反斜杠。|@""
检查是否有空双引号,因为[^\\]
要求字符串中至少有一个字符才能生效。|@''
检查是否有空单引号。