如何创建正则表达式来查找 JS 文件(或 JSON)中的所有字符串

Posted

技术标签:

【中文标题】如何创建正则表达式来查找 JS 文件(或 JSON)中的所有字符串【英文标题】:How to create a Regexp To find all strings in JS files (or JSON) 【发布时间】:2015-02-01 00:49:16 【问题描述】:

我正在尝试提取 js 文件中的所有字符串。 (在崇高文本“搜索所有文件”中使用正则表达式)

例如,这是一个文本文件:

a='string1'
b='string2'
c="string3"
alert("string\"4")
alert('string\'5')

所以,我有这个正则表达式:

/('.*?')|(".*?")/

我发现了这个:

['string1'].['string2',"string3"]

但我还需要:

["string4","string5"]

我该怎么做?

(我正在寻找 RegExp 解决方案 - 一个 RegExp 句子

还有一件事:最好的解决方案是,如果也可以忽略文件中的所有 JS cmets。 (不提取JS字符串,在cmets中)

谢谢。

【问题讨论】:

alert('string\'5") 不是正确的字符串,因为它没有正确关闭,是错字吗? 已修复。意思是:alert('string\'5') 那么["string4","string5"] 是错误的,因为它们实际上是["string\"4","string\'5"] 我不使用 ST,但我很快在 Google 上搜索了“崇高文本结构搜索”,第一次点击是 grasp,这似乎可以满足您的需求(以及更多)。 【参考方案1】:

你可以试试下面的正则表达式。

(['"])(?:\\\1|(?!\1).)*?\1

DEMO

(['"]) 捕获 '" 引号并将其存储到组索引 1 中。 (?:\\\1|(?!\1).) 这允许转义字符(由组索引 1 捕获的字符)。或者不是被捕获的字符零次或多次。 \1 必须以组索引 1 捕获的字符结尾。 它还匹配"string'5'"'string"5"' 等字符串

【讨论】:

以上是关于如何创建正则表达式来查找 JS 文件(或 JSON)中的所有字符串的主要内容,如果未能解决你的问题,请参考以下文章

js正则表达式

js-正则表达式

如何创建一个以任意组合查找单词的正则表达式?

JS 正则表达式

正则表达式查找部分输入是不是为有效 JSON

JS-正则表达式对象/RegExp