Javascript 使用正则表达式获取数据

Javascript 使用正则表达式获取数据,javascript,regex,Javascript,Regex,我制作的正则表达式从opts.taskDetails.order\u details获取itemlist 我想优化regex/任何其他更好的regex,以获得如上图所示的以下数据。 (可以是一个项目列表,也可以是多个项目列表) 除获取项目详细信息外,我还想获取从下面的opts.taskDetails.order\u details获取项目列表后留下的数据 Tipo de papa: -\nPapa Amarilla Tumbay S/0.00\n Adicional : - Quesp che

我制作的正则表达式从opts.taskDetails.order\u details获取itemlist

我想优化regex/任何其他更好的regex,以获得如上图所示的以下数据。 (可以是一个项目列表,也可以是多个项目列表)

除获取项目详细信息外,我还想获取从下面的opts.taskDetails.order\u details获取项目列表后留下的数据

Tipo de papa: -\nPapa Amarilla Tumbay S/0.00\n Adicional : - Quesp cheddar S/0.00\n Agrega Bebida: - Fanta 400 ml S/0.00\n
Salsas: - Mayonesa S/0.00\n - Ketchup S/0.00\n - Golf S/0.00\n - Guacamole S/0.00\n - Ají S/0.00\n - Tártara S/0.00\n - Mayo-aji S/0.00\n
代码
var选项={
“项目”:[{
“邮件解析标签”:“订单详细信息”,
“标签”:“订单详细信息”,
“数据类型”:“表格”,
“应用程序端”:“0”,
“必需”:0,
“价值”:1,
“数据”:{
“头”:[{
“邮件解析器标签”:“Detalle”,
“标签”:“Detalle”,
“类型”:“文本”,
“地球”:“地球”,
“id”:0,
"秀":一,,
“应用程序侧”:0,
“必需”:0
}, {
“邮件解析器标签”:“Cantidad”,
“标签”:“Cantidad”,
“类型”:“文本”,
“地球”:“地球”,
“id”:1,
"秀":一,,
“应用程序侧”:0,
“必需”:0
}, {
“邮件解析器标签”:“Unidad”,
“标签”:“Unidad”,
“类型”:“文本”,
“地球”:“地球”,
“id”:2,
"秀":一,,
“应用程序侧”:0,
“必需”:0
}, {
“邮件解析标签”:“总计”,
“标签”:“总计”,
“类型”:“文本”,
“地球”:“地球”,
“id”:2,
"秀":一,,
“应用程序侧”:0,
“必需”:0
}],
“其他”:[…],
“正文”:[]
},
“模板id”:“NUEVO_PEDIDO”,
“appCheck”:真
}],
“任务详细信息”:{
“订单详细信息”:"Detalle\n Unidad\n Cantidad\n总计\n三重失眠症特别S/37.90 1 S/37.90失眠症特别S/nS/212 S/23.12*爸爸:阿马利拉汤贝爸爸S/0.00\n*Adicional:-Quesp cheddar S/0.00\n*阿格雷加贝比达:*-Fanta 400毫升S/0.00\n*萨尔萨:*-maynesa S/0.00\n-番茄酱S/0.00\n-高尔夫S/0.00\n-鳄梨酱S/0.00.00\n-AjíS/0.00\n-Tártara S/0.00\n-Mayo aji S/0.00\n“
}
}
var items=opts.items;
var taskDetails=opts.taskDetails;
对于(var p=0;pconsole.log(“ITEMS”,parameter.data.body)
这里有一个
regex
来切碎您的
订单详细信息
,并在最后提取剩余部分

我使用一个rx获取标题、项目和附加。然后使用
g
标志解析项目。您可以在正则表达式中验证更多,或者将匹配解析为一个数字,但您应该得到点。关键是两阶段解析

我把结果放在一个
order
对象中。你可以简单地将它映射到你想要的任何东西;它更容易显示与其他代码隔离的正则表达式和解决方案

var order\u details=`Detalle\n Unidad\n Cantidad\n Total\n三重失眠症患者S/37.90 1 S/37.90失眠症患者S/23.12 1 S/23.12 Tipo de papa:-papa Amarilla Tumbay S/0.00\n Adicional:-Quesp cheddar S/0.00\n Agrega Bebida:-Fanta 400 ml S/0.00\n Salsals:-Maynesa S/0.00\n-番茄酱S/0.00\n-S/0.00\n-S/0.00-S/0.00-S/0.00\n-AjíS/0.00\n-Tártara S/0.00\n-Mayo aji S/0.00\n“`
var order\u details2=`Detalle\n Unidad\n Cantidad\n Total\n Combo奶酪汉堡第2段S/39.90 1 S/39.90萨尔萨primera:-\nGolf S/0.00\n Elige tu bebida:-Coca Cola 500毫升S/0.00\n Elige tu bebida:-Coca Cola 500毫升S/0.00\n Verduras primera:-Cebolla blanca S/0.00\n-Tomate S/0.00\n-Lechuga S/0.00\n萨尔萨segunda:-S/0.00\nTártara S/0.00\n青翠-Cebolla blanca S/0.00\n-Tomate S/0.00\n-Lechuga S/0.00\n Porción de papa:-papa常规S/0.00\n`
函数解析(字符串){
//标题、项目和tipo
var rxItems=/Detalle\n Unidad\n Cantidad\n\Total\n\s*([^:]+)(([^::+:[\s\s]*))/
//单项行
var rxItem=/s*(.*?)\s+(s\/.*?)\s+(\d+)\s+(s\/.*)/g
变量顺序={