javascript - 使用正则表达式匹配 javascript 中的引号包裹字符串

标签 javascript regex

我需要一个用于 javascript 的正则表达式来匹配

"{any group of chars}" <-- where that last " is not preceeded by a \

例子:

... foo "bar" ...  => "bar"
... foo"bar\"" ... => "bar\""
... foo "bar" ...  goo"o"ooogle "t\"e\"st"[] => ["bar", "o", "t\"e\"st"]

实际的字符串会更长,并且可能包含多个匹配项,其中还可能包含空格或正则表达式特殊字符。

我已经开始尝试分解语法,但我自己对正则表达式并不强大,我很快就卡住了,但我确实匹配了所有内容,除了匹配包含\"的情况(我认为).. .

https://regex101.com/r/sj4HXw/1

更新:

更多关于我的情况......

此正则表达式用于“语法高亮显示”我博客文章中嵌入的代码块中的字符串,因此真实世界的示例可能看起来像这样......

<pre id="test" class="code" data-code="csharp">
   if (ConfigurationManager.AppSettings["LogSql"] == "true")
</pre>

我正在使用以下 javascript 来实现突出显示..

var result = $("#test").text().replace(/"[^"\\]*(?:\\[\s\S][^"\\]*)*"/g, "<span class=\"string\">$1</span>");
$("#test").html(result);

出于某种原因,即使在这种情况下使用建议的答案(至少到目前为止),我也会得到奇怪的结果。

这可行,但出于某种原因将值 $1 而不是实际匹配项。

最佳答案

优先转义字符:

"(\\.|[^"])*"

https://regex101.com/r/sj4HXw/2

关于javascript - 使用正则表达式匹配 javascript 中的引号包裹字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831523/

相关文章:

php - 如何在上传到服务器之前预处理本地 CSV 文件?

javascript - Extjs添加到组合框不可选择的="on"属性

c# - C# Regex 如何捕获 *| 之间的所有内容?和 |*?

regex - Angular 中的货币正则表达式

java - 从字符串中删除特殊字符

javascript - 如何使用 moment js 解析这个日期字符串

javascript - Request.QueryString 未定义

javascript - 创建文本区域和分析按钮

python - 为什么这个解决方案会失败?嵌套和匹配的括号

java - Webdriver Java : Using regular expressions - how to insert them?