我正在尝试执行regexp命令,但无法正常工作。我如何使其可行?

时间:2019-06-14 11:32:12

标签: javascript regex

我越来越虚假了。 regex.exec为什么不起作用?

如何使它工作,以便执行if循环?

grep

3 个答案:

答案 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