匹配组没有前瞻性

时间:2018-09-13 10:17:52

标签: javascript regex

这是我的问题,我的输出如下:

[{"addr":"1","cid":1.3}]

我需要创建一个可以同时匹配“ 1”和“ 1.3”的RegEx。
代码:

var reg = new RegExp(/(\d+?\([^a-zA-Z])(?![a-zA-Z])/);
x="[{"addr":"1","cid":1.3}]"
if (addr.match(reg)) {
    return msg;
}
return;

addrcid的范围都可以从1到65536。

我确实尝试过类似/(\d+?\([^a-zA-Z])(?![a-zA-Z])/之类的方法,但是没有用。

我希望我的输出与我所知道的可以创建组分开,但我的RegEx知识非常有限。

所需的输出:[1],[1.3];

有什么主意吗?

2 个答案:

答案 0 :(得分:1)

您可以使用JSON.parse并使用Object.values来获取值或使用reviver函数来代替正则表达式。这里是示例:

var json = '[{"addr":"1","cid":1.3}]';

var arr = JSON.parse(json);

var res = arr.map(Object.values)[0]

console.log(res)


//reviver
var res2 = []

JSON.parse(json, (k,v)=>{
    if(+v >= 1 && +v <= 65536)res2.push(v);
})

console.log(res2)

答案 1 :(得分:-1)

您可以使用 / \ d。?\ d?/ g

在此处查看工作示例 https://regexr.com/3ve0e