这是我的问题,我的输出如下:
[{"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;
addr
和cid
的范围都可以从1到65536。
我确实尝试过类似/(\d+?\([^a-zA-Z])(?![a-zA-Z])/
之类的方法,但是没有用。
我希望我的输出与我所知道的可以创建组分开,但我的RegEx知识非常有限。
所需的输出:[1],[1.3];
有什么主意吗?
答案 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