如果此类字符串在Javascript中包含逗号,则正则表达式获取引号之间的文字字符串的内容

Posted

技术标签:

【中文标题】如果此类字符串在Javascript中包含逗号,则正则表达式获取引号之间的文字字符串的内容【英文标题】:Regex to get content of literal string between quotes if such string have comma within in Javascript 【发布时间】:2014-09-05 18:44:48 【问题描述】:

我真正的问题是我有一个巨大的数组,其中有几个值拼写错误,例如:字符串、整数、布尔值、浮点数、日期时间、空白、对象和其中的另一个数组,它作为一个完整的字符串文本出现在我面前,我需要解析以供以后评估和序列化。 如下所示:

var result = "ocmq=[\"REQ2014/103590\", false, 41, \"Others\", \"Close\", 185312, '02/07/2014 10:19:28', \"non character player\", \"current operator\", , 0, false, , "Greetings everyone, as I said before, some extra engagement is needed in order to accomplish OS \"OS2013/103581\" , which was removed unproperly, and now we need rollback it to it's previous status (\"O.S. Valid\"). Regarding that previously related OS was tracked about last december and it must integrate current payment orders we have high severity on this issue. Thank you.", \"approved\", , \"closed\", \"high\", \"cus\"]";

我处理了这种情况,直到遇到以下问题:

"Greetings everyone, as I said before, some extra engagement is needed in order to accomplish OS \"OS2013/103581\" , which was removed unproperly, and now we need rollback it to it's previous status (\"O.S. Valid\"). Regarding that previously related OS was tracked about last december and it must integrate current payment orders we have high severity on this issue. Thank you."

如您所见,这是一个由所见即所得编辑器填充的文本字符串,就像这样,用户可以根据自己的喜好编写它,例如使用逗号、引号、方括号、特殊字符等等。 注意逗号

我想知道如何匹配这个特定的文本字符串条目。

我需要在双引号之间获取内容(只有内容,如果可能,没有双引号)如果并且只有在它有逗号。 我需要忽略内部双/单引号,就像它出现在这里:\"OS2013/103581\" 或没有斜杠,如"OS2013/103581"。 p>

所以它应该匹配:

仅引号之间的文本;

当且仅当其中包含逗号时;

忽略内部双引号/单引号。

例子:

"这个字符串应该匹配,一旦它在引号之间,它有逗号,它可以忽略"quotes"和\"quoted slahshes\"。

有可能吗?但愿如此!任何帮助将不胜感激。干杯;)

【问题讨论】:

第一个代码块不是有效的 JS 语法。您的字符串在那里被提前终止。 我在您的示例中没有看到任何分号。你是说逗号吗? 确实@RobbyCornelissen 我弄错了,已经审核过了。谢谢。 @Cerbrus 相当正确,我还在编辑它。 @xxbbc 我要做的是用每个逗号分隔符拆分字符串链,一旦它是分隔每个数组项的内容。所以我循环它,对于每个项目,我都有正则表达式模式来匹配每个特定情况。 【参考方案1】:

以下正则表达式符合您的条件:

/".*;.*"/g

您的标准是:

仅引号之间的文本 当且仅当它包含至少一个分号时 忽略内部双引号/单引号

满足最后一个条件是因为正则表达式中的量词(例如“*”和“+”)是“贪婪的”(参见http://www.regular-expressions.info/repeat.html)。

编辑

/"[^']*;[^']*"/

我之前给出的答案中的正则表达式没有忽略内部单引号。新的使用否定字符类来忽略单引号。

【讨论】:

以上是关于如果此类字符串在Javascript中包含逗号,则正则表达式获取引号之间的文字字符串的内容的主要内容,如果未能解决你的问题,请参考以下文章

系统运维系列 之CSV文件读取时内容中包含逗号的处理方法

系统运维系列 之CSV文件读取时内容中包含逗号的处理方法

csv文件

在 Java 中拆分其数据中包含逗号和特殊字符的 csv 文件

如何在 JavaScript 中包含 ejs 部分?

在javascript中包含整个字符串中的单词[关闭]