Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的正则表达式无法运行Node.js?_Javascript_Arrays_Node.js_Regex_Express - Fatal编程技术网

Javascript 我的正则表达式无法运行Node.js?

Javascript 我的正则表达式无法运行Node.js?,javascript,arrays,node.js,regex,express,Javascript,Arrays,Node.js,Regex,Express,我有一个正则表达式,它将一些文本提取到数组中。该代码在前端可以正常工作,但在node.js服务器中不起作用 每当我在后端运行代码时,都会收到以下错误消息: TypeError: Cannot read property '1' of null at C:\Users\PureTech\master\app\server\routes.js:26:11 at Layer.handle [as handle_request] (C:\Users\PureTech\node_modules

我有一个正则表达式,它将一些文本提取到数组中。该代码在前端可以正常工作,但在node.js服务器中不起作用

每当我在后端运行代码时,都会收到以下错误消息:

TypeError: Cannot read property '1' of null
   at C:\Users\PureTech\master\app\server\routes.js:26:11
   at Layer.handle [as handle_request] (C:\Users\PureTech\node_modules\express\lib\router\layer.js:95:5)
   at next (C:\Users\PureTech\node_modules\express\lib\router\route.js:131:13)
   at Route.dispatch (C:\Users\PureTech\node_modules\express\lib\router\route.js:112:3)
   at Layer.handle [as handle_request] (C:\Users\PureTech\node_modules\express\lib\router\layer.js:95:5)
   at C:\Users\PureTech\node_modules\express\lib\router\index.js:277:22
   at Function.process_params (C:\Users\PureTech\node_modules\express\lib\router\index.js:330:12)
   at next (C:\Users\PureTech\node_modules\express\lib\router\index.js:271:10)
   at C:\Users\PureTech\node_modules\express-session\index.js:433:7
   at C:\Users\PureTech\node_modules\connect-mongo\lib\connect-mongo.js:305:11 
这就是我说的代码。它是一个正则表达式,用于将“text”变量中的特定数字提取到数组中

var text = '[Extracted] id: 194805284, Waxaad $55 ka heshay  MAXAMED  CABDILAAHI JAAMAC SAALAX (252906152669) Tar: 15/04/19 08:44:40, Haraagaagu waa $1,042.7[Extracted] id: 193537533, Waxaad $3 ka heshay  ABDULKADIR  ABDIDAHIR FARAH (907794804) Tar: 14/04/19 10:15:32, Haraagaagu waa $59.17';
var reso = text.replace("$", "");
var textArray = reso.split('[Extracted]');

var regularExpression = new RegExp(/id:\s+([0-9]+).+Waxaad\s+([0-9]+).+[^\(]+\(([0-9]+)\)\s+Tar:\s+([0-9\/\s:]+)/i);
var output = [];
var item;
for(var i = 1; i < textArray.length;  i++){
    item = textArray[i].match(regularExpression);
    output.push({
        id: item[1].trim(),
        amount: item[2].trim(),
        time: item[3].trim(),
        number: item[4].trim()
    });
}

console.log(output);
var text='[Extracted]id:194805284,Waxaad$55ka heshay MAXAMED Cabdilahi JAAMAC SAALAX(252906152669)Tar:15/04/19 08:44:40,Haraagagu waa$1042.7[Extracted]id:193537533,Waxaad$3ka heshay ABDULKADIR ABDIDAHIR FARAH(907794804)Tar:14/04/19 10:15:32,Haraagagagu waa$59.17';
var reso=text.replace(“$”,”);
var textary=reso.split(“[Extracted]”);
var regularExpression=newregexp(/id:\s+([0-9]+)。+Waxaad\s+([0-9]+)。++[^\(]+\([0-9]+)\)\s+Tar:\s+([0-9\/\s:]+)/i);
var输出=[];
var项目;
对于(变量i=1;i
我希望此脚本在后端(node.js)上工作,就像在前端工作一样。

您必须定义:

var regularExpression = new RegExp("id:\s+([0-9]+).+Waxaad\s+([0-9]+).+[^\(]+\(([0-9]+)\)\s+Tar:\s+([0-9\/\s:]+)", "i");

您必须定义:

var regularExpression = new RegExp("id:\s+([0-9]+).+Waxaad\s+([0-9]+).+[^\(]+\(([0-9]+)\)\s+Tar:\s+([0-9\/\s:]+)", "i");


我解决了这个问题

  • 我使用这个脚本删除了所有的“$”符号
    var reso=text.split(“$”).join(“”;
  • 我删除了新的RegExp

  • 然后它工作得很好。

    我解决了这个问题

  • 我使用这个脚本删除了所有的“$”符号
    var reso=text.split(“$”).join(“”;
  • 我删除了新的RegExp

  • 然后它工作得很好。

    您不需要
    新的RegExp()
    /…/
    符号已经是一个可以使用的regex对象了。另外,在使用字符串时,您需要双转义“\”。由
    .split()提取的第二个字符串
    与正则表达式不匹配。
    3
    之前的
    $
    是不允许的。
    .replace()
    调用只删除字符串中的第一个
    $
    ,而不是全部。@Axmednuur是的,这是因为第二次通过循环
    .match()
    返回
    null
    。之所以这样做,是因为正则表达式与第二个字符串不匹配,因为尝试删除
    $
    字符只会删除其中一个。这与节点无关。
    var reso=text.replace(/\$/g,”)
    将替换所有字符:)您不需要
    new RegExp()
    /…/
    符号已经是一个可以使用的正则表达式对象。此外,在使用字符串时,您需要双转义“\`。由
    .split()
    提取的第二个字符串与正则表达式不匹配。不允许在
    3
    之前使用
    $
    .replace()
    调用只删除字符串中的第一个
    $
    ,而不是全部。@Axmednuur是,这是因为通过循环的第二次
    .match()
    返回
    null
    。这样做是因为正则表达式与第二个字符串不匹配,因为删除
    $
    字符的尝试只删除其中一个字符。它与Node无关。
    var reso=text.replace(/\$/g,”)
    将替换所有节点:)我尝试了你的答案。它仍然找不到项[]对象。它显示此错误:-TypeError:无法读取的属性“1”null@Axmednuur:因为正则表达式与字符串不匹配。例如,
    Waxaad\s+([0-9]+)
    Waxaad$55
    不匹配。在使用
    item[1]
    之前,请测试
    item
    是否为非空数组。我尝试了您的答案。它仍然找不到项[]对象。它显示此错误:-TypeError:无法读取的属性“1”null@Axmednuur:因为正则表达式与字符串不匹配。例如,
    Waxaad\s+([0-9]+)
    Waxaad$55
    不匹配。在使用
    项[1]
    之前,测试
    项是否为非空数组。