【问题标题】:Regular expression for matching string from result (Javascript/Nodejs)从结果中匹配字符串的正则表达式(Javascript/Nodejs)
【发布时间】:2017-08-04 02:28:20
【问题描述】:

正则表达式和 nodejs 的新手。我有一个调用函数的程序,然后在控制台中显示(结果),如下所示。正则表达式如何匹配 "on":false 字符串:

 {
   "state": {
   "on": false,
   "name": name,
   "date": date,
   "value": 254,
  },
 }

我目前有这个,但不是真的为我工作。有谁知道我会用什么正则表达式来捕获“ONLY”:“on”:false,??任何帮助,建议非常感谢。

call.getStatus(22, function(err, result){
    if (err) throw err;
    displayStatus(result);
    var re = new RegExp("/^"on":false,$\");
    if (re.test(displayStatus)) {
        console.log("Valid");
    } else {
        console.log("Invalid");
    }   
});

【问题讨论】:

  • 是否要将字符串 (JSON) 解析为对象=> 使用JSON.parse!
  • @ibrahimmahrir 我正在尝试编写一个通过/失败案例来查看“on”:false 并标记返回失败。要显示我的状态: var displayStatus = function(status){ console.log(JSON.stringify(status, null, 2)); };
  • displayStatus 是一个函数,所以这个re.test(displayStatus) 是错误的!我想你的意思是re.test(result)
  • 啊,我明白了,谢谢!关于如何正确语法化我需要在正则表达式中捕获的内容的任何想法或参考链接
  • 为什么不直接解析字符串并使用JSON.parse() 将其转换为对象x,然后检查是否为x['on'] === false?似乎比拼凑正则表达式要容易得多。

标签: javascript node.js regex logging


【解决方案1】:

如果您确定子字符串是"on": false,那么您可以像这样使用indexOf

call.getStatus(22, function(err, result){
    if (err) throw err;
    displayStatus(result);
    if (result.indexOf('"on": false') !== -1) {
        console.log("Valid");
    } else {
        console.log("Invalid");
    }   
});

或者为了安全起见,使用这样的正则表达式:

call.getStatus(22, function(err, result){
    if (err) throw err;
    displayStatus(result);
    var re = /"on"\s*:\s*false*/;
    if (re.test(result)) {
        console.log("Valid");
    } else {
        console.log("Invalid");
    }   
});

我使用了一个正则表达式文字 (/.../),它查找 srting "on" 后跟 0 个或多个空格 \s* 后跟一个 : 和 0 个或多个空格,最后是 false

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2012-06-05
    • 2013-12-25
    相关资源
    最近更新 更多