我需要一个用于 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 而不是实际匹配项。
最佳答案
关于javascript - 使用正则表达式匹配 javascript 中的引号包裹字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831523/