javascript正则表达式允许多个带引号的单词

javascript正则表达式允许多个带引号的单词,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个,需要验证双引号之间的所有内容是纬度还是经度。我已经把它设置好了,所以这个词不能用超过3次,这很好。但我有一条错误消息,显示何时使用了错误的格式。我需要弹出的错误时,用户的重点,并没有把任何东西之间的引号或它不是纬度或经度 这是我的演示: $('#test').on('keydown focusout', function(e){ var word = 'latitude', count = this.value.match(new RegExp('"\\b'+word+'\

我有一个
,需要验证双引号之间的所有内容是纬度还是经度。我已经把它设置好了,所以这个词不能用超过3次,这很好。但我有一条错误消息,显示何时使用了错误的格式。我需要弹出的错误时,用户的重点,并没有把任何东西之间的引号或它不是纬度或经度

这是我的演示:

$('#test').on('keydown focusout', function(e){
var word  = 'latitude',
    count = this.value.match(new RegExp('"\\b'+word+'\\b"','g')) ||  [],
    limiter = $('#output');

$('#output').text(count.length);

return !(count.length > 2 && e.which != 8);

});

//Error - Max limit reached

$('#test').bind('keyup focusout', function(){  
limiter = $('#output');

if(limiter.text() == '3'){

    $('#limitReached').attr("class","hi");
    $('#limitReached').text("You cannot exeed more than 10 coorniates");
    $('#test').css({'border': '1px solid red'});

}
else{
     $('#limitReached').attr("class","bye");
     $('#limitReached').text("");
     $('#test').css({'border': '1px solid black'});
}
});

//Error - Format is wrong

$('#test').on('focusout', function(e){  
var word1  = 'latitude',
    word2  = 'longitude', 
    count = this.value.match(new RegExp('"\\b'+word1+'\\b"','g')) || [];

if ($(this).val() != count){

    $('#limitReached').attr("class","hi");
    $('#limitReached').html('Please use correct JSON format:<br> example - [{"latitude":33.851871,"longitude":-84.364336},]');
    $('#test').css({'border': '1px solid red'});

}
else{
     $('#limitReached').attr("class","bye");
     $('#limitReached').text("");
     $('#test').css({'border': '1px solid black'});
}
});
$('#test')。打开('keydown focusout',函数(e){
var word=‘纬度’,
count=this.value.match(新的RegExp(“\\b”+word+'\\b“,'g'))| |[],
限制器=$(“#输出”);
$('#output').text(count.length);
返回!(count.length>2&&e.which!=8);
});
//错误-已达到最大限制
$('#test').bind('keyup focusout',function(){
限制器=$(“#输出”);
if(limiter.text()==“3”){
$('#limitreach').attr(“class”,“hi”);
$(“#limitreach”).text(“您不能超过10个合作伙伴”);
$('#test').css({'border':'1px solid red'});
}
否则{
$('#limitreach').attr(“class”,“bye”);
$('#limitreach')。文本(“”);
$('#test').css({'border':'1px solid black'});
}
});
//错误-格式错误
$('#test')。在('focusout',函数(e){
变量word1=‘纬度’,
word2=‘经度’,
count=this.value.match(新的RegExp(“\\b”+word1+“\\b”,'g'))| |[];
if($(this).val()!=count){
$('#limitreach').attr(“class”,“hi”);
$('#limitreach').html('请使用正确的JSON格式:
示例-[{“纬度”:33.851871,“经度”:-84.364336},]'); $('#test').css({'border':'1px solid red'}); } 否则{ $('#limitreach').attr(“class”,“bye”); $('#limitreach')。文本(“”); $('#test').css({'border':'1px solid black'}); } });
参考thg435的评论:

如果您试图解析无效的json,将抛出一个
SyntaxError
。见:

parse将字符串解析为JSON并返回解析后的值

如果要分析的字符串不是有效的JSON,则会引发SyntaxError异常

示例代码:

try {
    var json = JSON.parse('[{"latitude":33.851871,"longitude":-84.364336}]');
    if (json.length > 3) throw new Error("Too many coordinates");
    _.each(json, function(coordinate) {
        if (!_.has(coordinate, 'latitude') || !_.has(coordinate, 'longitude')) throw new Error("Invalid coordinate pair found");
    });
}
catch (e) {
    // handle your invalid json and return to stop further execution
    console.error(e);
    return;
}

console.info('ok');
这种方法使用


请参阅此处的工作副本:

参考thg435的评论:

如果您试图解析无效的json,将抛出一个
SyntaxError
。见:

parse将字符串解析为JSON并返回解析后的值

如果要分析的字符串不是有效的JSON,则会引发SyntaxError异常

示例代码:

try {
    var json = JSON.parse('[{"latitude":33.851871,"longitude":-84.364336}]');
    if (json.length > 3) throw new Error("Too many coordinates");
    _.each(json, function(coordinate) {
        if (!_.has(coordinate, 'latitude') || !_.has(coordinate, 'longitude')) throw new Error("Invalid coordinate pair found");
    });
}
catch (e) {
    // handle your invalid json and return to stop further execution
    console.error(e);
    return;
}

console.info('ok');
这种方法使用



请参阅此处的工作副本:

您显然试图用正则表达式解析JSON-不要!在try catch block.BTW中使用JSON.parse,您提供的示例JSON实际上不是有效的JSON,它有一个额外的逗号。@thg435-您能给出一个这样的示例吗?@KevinB-谢谢,我没有注意到。您显然是在尝试用正则表达式解析JSON-不要!在try catch block.BTW中使用JSON.parse,您提供的示例JSON实际上不是有效的JSON,它有一个额外的逗号。@thg435-您能举个例子吗?@KevinB-谢谢,我没有注意到。我已经有了一个限制器。我不需要测试长度。我需要测试它们是否存在于双引号中。我试图将其放在我的小提琴的//Error-Format is Error |部分下,但没有得到任何结果。是否要验证每个坐标对都有经度和纬度?我再次尝试将其添加到上面的小提琴中,但它仍然不起作用。我尝试了alert()函数,其中抛出了错误,但没有得到任何结果。我看你也有一套字符串。My textarea允许用户输入新坐标,因此无法修复。有没有办法把你的东西和我的小提琴结合起来。==>抱歉,添加了错误的小提琴版本,正确的版本是:非常感谢,我知道你现在做了什么。现在我在小提琴上看到它就清楚多了。所以验证部分现在可以工作了,但是现在限制器已经被移除,不再阻止用户输入我以前的任何内容。我已经有了一个限制器。我不需要测试长度。我需要测试它们是否存在于双引号中。我试图将其放在我的小提琴的//Error-Format is Error |部分下,但没有得到任何结果。是否要验证每个坐标对都有经度和纬度?我再次尝试将其添加到上面的小提琴中,但它仍然不起作用。我尝试了alert()函数,其中抛出了错误,但没有得到任何结果。我看你也有一套字符串。My textarea允许用户输入新坐标,因此无法修复。有没有办法把你的东西和我的小提琴结合起来。==>抱歉,添加了错误的小提琴版本,正确的版本是:非常感谢,我知道你现在做了什么。现在我在小提琴上看到它就清楚多了。所以验证部分现在可以工作了,但是现在限制器已经被移除,不再阻止用户输入我以前输入的任何内容。