我找到了这个问题的答案 here但它是在 php 中。
我想匹配像 [123, "hehe", "lala"]
这样的数组,但前提是数组语法正确。
我制作了这个正则表达式 /\["?.+"?(?:,"?.+"?)*\]/
.
问题在于,如果输入是[123, "hehe, "lala"]
,则正则表达式匹配,但语法不正确。
如何才能使其仅在数组语法正确的情况下匹配?
我的问题是当第一个 "
匹配时需要第二个 "
。
编辑:我只是尝试仅使用数组内的字符串和数字来执行此操作。
最佳答案
您可以尝试这个正则表达式:/\[((\d+|"([^"]|\\")*?")\s*,?\s*)*(?<!,)\]/
每个项目应该是
"([^"]|\\")*?"
:以“开头和结尾,包含除”以外的任何内容。如果包含 ",则应将其转义 (\")。
\d+
:一个数字
每个项目之后应该是
\s*,?\s*
: 一个逗号,前后可以有任意数量的空格。
并且右括号之前不应该是逗号:(?<!,)
关于javascript - 在javascript中使用正则表达式解析数组语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54791987/