Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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 用于解析的正则表达式工作不正常_Javascript - Fatal编程技术网

Javascript 用于解析的正则表达式工作不正常

Javascript 用于解析的正则表达式工作不正常,javascript,Javascript,我有一根这样的绳子 str = "[numA1-E1]+[SalineLotNumberQ2-P1]-[numericP1-A1]" 正则表达式给出 arr[0] = numA1E1 arr[1] = SalineLotNumberQ2P1 arr[2] = numericP1A1 而我想要 arr[0] = numA1-E1 arr[1] = SalineLotNumberQ2-P1 arr[2] = numericP1-A1 如果我从正则表达式中删除减号,它将给出arr[2]=-

我有一根这样的绳子

str = "[numA1-E1]+[SalineLotNumberQ2-P1]-[numericP1-A1]" 
正则表达式给出

arr[0] = numA1E1 
arr[1] = SalineLotNumberQ2P1
arr[2] = numericP1A1
而我想要

arr[0] = numA1-E1 
arr[1] = SalineLotNumberQ2-P1
arr[2] = numericP1-A1
如果我从正则表达式中删除减号,它将给出arr[2]=-numericP1-A1

如果你能帮忙的话

目前我的正则表达式是

str.replace(/[+-/*//[ ]/g,'').split("]").slice(0, -1);

不要用空字符串替换-

str.replace(/[+/*//[ ]/g,'').split("]").slice(0, -1);
const str=“[numA1-E1]+[SalineLotNumberQ2-P1]”;
const result=str.replace(/[+/*/[]/g',).split(“]”).slice(0,-1);/*在replace方法的正则表达式中不包含“-”,所以它将保留在结果中*/

console.log(结果[0])只需从正则表达式中删除

 var str = "[numA1-E1]+[SalineLotNumberQ2-P1]";
    var abc =str.replace(/[+/*//[ ]/g,'').split("]").slice(0, -1);
    console.log(abc);
m应该是
['numA1-E1','SalineLotNumberQ2-P1','numericP1-A1']


编辑:这是python,js正则表达式的工作原理与之类似

使用正则表达式是可能的。首先,您需要使用]拆分它并删除+。然后,您必须映射数组以从字符串的开头移除符号-

代码如下:

    var str = "[numA1-E1]+[SalineLotNumberQ2-P1]-[x-y]";
    var arr =str.replace(/[+/*//[ ]/g,'').split("]").slice(0, -1);
    arr = arr.map(function(item){
       return item.replace(/^-/, '')
    });
    console.log(arr);
试试这个
str=“[numA1-E1]+[SalineLotNumberQ2-P1]-[numericP1-A1]”;
array=str.match(/\[^\]*\]/g)//在这里,它将生成字符串数组(即sur被[and]四舍五入)
array=array.map(x=>x.replace(/\[\]/g',)//此处将[和]替换为“”
console.log(数组)查看此项。
首先,正则表达式删除]…[&添加|作为分隔符,然后]然后[。完成此操作后,按|

str=“[numA1-E1]+[SalineLotNumberQ2-P1]-[numericP1-A1]”;
arr=str.replace(/(\].\[)/g,“|”).replace(/[\]]/,”).replace(/[\]/,”).split(“|”)

console.log(arr)
一个更简单的解决方案,匹配
[]
之间的所有字符并删除括号

const str=“[numA1-E1]+[SalineLotNumberQ2-P1]-[numericP1-A1]”;
const result=str.match(/\[([^\]+)\]/g).map(item=>item.substr(1,item.length-2))

控制台日志(结果)荣幸!!继续问!!真棒的家伙!!如果我有str=“[App Version]+4+[Number 1 Q1-P3]”。。。。我想要arr[0]=应用程序版本arr[1]=编号1 Q1-P3请回复@ivp
    var str = "[numA1-E1]+[SalineLotNumberQ2-P1]-[x-y]";
    var arr =str.replace(/[+/*//[ ]/g,'').split("]").slice(0, -1);
    arr = arr.map(function(item){
       return item.replace(/^-/, '')
    });
    console.log(arr);