Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在字符串中查找字符串_Javascript_Regex - Fatal编程技术网

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