JS正则表达式查找被双引号包围的子字符串
JS regular expression to find a substring surrounded by double quotes
我需要找到由双引号包围的子字符串,例如,像"test"
, "te'"st"
或""
,但不是"""
也不是"'"。要实现这一点,最好的方法是在下面的
1) /".*"/g
2) /"[^"'']*(?:''['S's][^"'']*)*"/g
3) /"(?:''?['S's])*?"/g
4) /"([^"'']*("|''['S's]))+/g
昨天我在面试中被问到这个问题,我想知道答案,以便将来参考。
这些表达式的求值方式如下:
表达式1匹配
- 逗号
- 任意字符,包括反逗号或斜杠
- 最后一个倒逗号。
这将匹配"test" some wrong text "text"
,因此失败
表达式2匹配:
- 逗号
- 尽可能多的字符,既不是反逗号也不是斜杠
- 贪心如多套
- 任何以斜杠开头的字符
- 尽可能多的字符,既不是反逗号也不是斜杠
- 最后一个逗号
因此,这将收集集合中以反逗号分隔的所有字符。如果倒置逗号前面有斜杠,则在任何后续集合中包含它,从而明确排除它。
表达式3匹配:
- 逗号
- 尽可能少的集合:
- 任意一个字符前带可选斜杠
- 最后一个逗号
收集所有字符,可选地在前面加一个斜杠,但不是贪婪的。
表达式4匹配:
- 逗号
- 所有不是反逗号或斜杠的字符
- 一个或多个:
- 逗号或
- 斜杠和任意字符
这将匹配"test"'x
,因此失败
结论:
据我所知,表达式2和3都可以工作。我可能遗漏了一些东西,但对于给出的示例,两者都肯定可以工作(或不合适)。那么问题来了,哪个更好。我会选三个,因为这样更简单。
你也可以用这个更简单的家伙:
/("(''"|[^"])+")/g
http://jsfiddle.net/b9chris/eMN2S/你的语法有点不清楚。我假设你想找到DQ[除了DQ或'DQ]* DQ的形式的所有字符串。
这个/"([^"'''']|''''"|''''[^"])*"/g
的正则表达式
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 反向字符串比较
- 如何有效地将游戏数据存储在URL查询字符串中
- 可变大小的JavaScript字符串如何成为基元类型
- 将DOM节点值与字符串Javascript进行比较
- 如何在 Javascript 中将变量的值从字符串转换为整数
- JavaScript Regex,用于由特定字符串包围的数字和空格
- JavaScript - 检查给定的子字符串是否被字母包围
- 如何在第一个“/”(斜杠)处拆分字符串并将其部分包围在“中
- JS正则表达式查找被双引号包围的子字符串
- 在没有引号包围的情况下,用空格和句号分隔字符串