首页 > 解决方案 > 我正在尝试执行 regexp 命令,但它不起作用。我怎样才能使它可行?

问题描述

我越来越假了。为什么 regex.exec 不工作?

我怎样才能让它工作,以便执行 if 循环?

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.exec(result.latitude) && regex.exec(result.longitude)){
    console.log('if  block');
}
else{
    console.log('else  block');
}

标签: javascriptregex

解决方案


主要问题是您正在尝试测试 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');
}

我还将您的正则表达式更改为正则表达式文字,否则您需要转义\字符。

但是,如果这应该是一个测试,那么您应该确保您正在使用规范有效的数据测试您的测试。也许纬度和经度应该只有6位数字?也许它们会是可变的?在处理数据清理/验证时,了解您的实际数据约束/要求是很重要的,理想情况下,不要仅仅依靠假设某些示例和测试告诉您您需要知道的一切。


推荐阅读