javascript - 正则表达式匹配文本中的简单 json

标签 javascript json regex

我没能写出一个 reg exp 来捕获 { key: something } 的所有出现,其中 something 可以是 以外的任何东西。我试过了

{ key: [^}]* }
{ key: [^} ]* }
{ key: (.*?)({| ) }
{ key: (.*?)({) }
{ key: (?!.*({| )) }
{ key: (?!.*({)) }

其中第一个有时有效,但不是根据我能看到的任何模式。我在 javascript 中使用这些:

const pattern = '{ key: [^}]* }';
const regExp = new RegExp(pattern, 'igm');
let match = true;

do {
  match = regExp.exec(text);
  if (match) {
     // use result
  }
} while (match);

(我还尝试在循环中添加 regExp.lastIndex = 0;,并设置 regExp = null 并重新定义)。

但是我不认为这是(仅)javascript 问题;它们在 online regexp tester 上也不起作用.

我需要字符索引;举个例子,我想

kjh { key: sfdg } lkk { key: a }

产生 (5, 13) 和 (23, 10)(可能有一些误差)

有什么建议吗?

编辑:如果相关,用例是在编辑器中使用 draft.js 突出显示遵循此模式的文本

最佳答案

Don't .

使用 JSON.parse 将 JSON 解析为对象,以编程方式找到 key 。

kjh { key: sfdg } lkk { key: a }

这也不是有效的 JSON。如果这是来自服务器的一些数据,请以某种正确的数据传输格式(即 XML、YAML、JSON)提供它,而不是某种任意的、无结构的字符串。

关于javascript - 正则表达式匹配文本中的简单 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48491481/

相关文章:

JavaScript 数独 - 检查规则

javascript - Jquery Apprise 插件无法正常工作

javascript - 覆盖提交类型按钮以调用自定义 JavaScript 方法

arrays - 如何使用 SlowCheetah 转换 Json 配置文件中的数组元素?

r - 代入R中句子第N个词的模式

javascript - Google map 无法使用 jquery 加载

java - 在更新字段之前等待 JSON 响应完成

java - 如何使用 Intent 而不是 putExtra 将类文件变量获取到另一个 Activity 并通过按钮进行访问?

java - 正则表达式在 Java 中转义 Json 值中的双引号

javascript - 需要帮助让正则表达式获取两个不相关的字符串之间的内容