我越来越虚假了。 regex.exec为什么不起作用?
如何使它工作,以便执行if循环?
grep
答案 0 :(得分:1)
主要问题是您要测试6个有效数字,而不是示例中的8个数字。
解决此问题的一种简单方法是更改正则表达式,使其测试8位数字。
const result = {
latitude: 23.07696461,
longitude: 72.59447369
};
const regex = /^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,8}/;
if(regex.test(result.latitude) && regex.test(result.longitude)){
console.log('if block');
}
else{
console.log('else block');
}
我还将您的正则表达式更改为regex literal,否则您将需要转义\
字符。
但是,如果这应该是 test ,则应确保您正在使用规范有效数据测试您的测试。也许纬度和经度应该只有6位数字?也许他们会变?处理数据卫生/验证时,重要的是要知道您的实际数据约束/要求是什么,并且理想情况下,不仅要假设某些示例和测试告诉您所有您需要知道的知识。
答案 1 :(得分:0)
尝试测试功能:
const result = {
latitude: 23.07696461,
longitude: 72.59447369
};
const regex = new RegExp("^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,6}");
if(regex.test(result.latitude) && regex.test(result.longitude)){
console.log('if block');
}
else{
console.log('else block');
}
答案 2 :(得分:-1)
您必须使用双反斜杠(\\
)来处理\d
,否则,它将解释为d
字符。
检查这个伴侣。
const result = {
latitude: 23.07696461,
longitude: 72.59447369
};
const regex = new RegExp("^-?([1-8]?[1-9]|[1-9]0)\.{1}\\d{1,6}");
if(regex.test(result.latitude) && regex.test(result.longitude)){
console.log('if block');
}
else{
console.log('else block');
}
注意:我将exec
更改为test
,因为您只需要检查boolean
。
请检查更多explaination。