Javascript 在字符串中查找字符串
我有以下字符串:Javascript 在字符串中查找字符串,javascript,regex,Javascript,Regex,我有以下字符串: 这里“是一个”字符串“,它“确实包含了很多”奇怪的”东西“我”要“找到” 我想提取是一个的字符串,很多“奇怪的”,I和查找 有什么想法吗?谢谢 您可以尝试以下模式: /"((?:[^"\\]+|\\"|\\)*)"|'((?:[^'\\]+|\\'|\\)*)'/g 双引号内的内容在第1组中, 单引号内的内容在第2组中 注意:此解决方案对于转义引号不是完全防水的,因为如果可以检测上述模式的\“,前面有另一个\,则\将被视为一个文本\,并且引号不再转义 为了避免这个陷阱,当
这里“是一个”字符串“,它“确实包含了很多”奇怪的”东西“我”要“找到”
我想提取是一个
的字符串,很多“奇怪的”
,I
和查找
有什么想法吗?谢谢 您可以尝试以下模式:
/"((?:[^"\\]+|\\"|\\)*)"|'((?:[^'\\]+|\\'|\\)*)'/g
双引号内的内容在第1组中,
单引号内的内容在第2组中
注意:此解决方案对于转义引号不是完全防水的,因为如果可以检测上述模式的\“
,前面有另一个\
,则\
将被视为一个文本\
,并且引号不再转义
为了避免这个陷阱,当有奇数个反斜杠将\\“
替换为(?:\\{2})*\\”
时,可以检查案例,然后第一个模式将如下所示:
/"((?:[^"\\]+|(?:\\{2})*\\"|\\)*)"|'((?:[^'\\]+|(?:\\{2})*\\'|\\)*)'/g
这个基于反向查找的正则表达式应该适合您:
/(["']).*?(?<!\\)\1/g
Live Demo:适用于该示例,但是当任何其他字符被转义时,例如:
此处“是一个字符串”
它不会。看起来很聪明。有没有机会让它与JavaScript一起工作,而JavaScript不支持向后看?(应该提到这一点)
/(['"])(?:\1|.*?[^\\]\1)/g