我有这样一句话
a something* q b c w
Run Code Online (Sandbox Code Playgroud)
我必须匹配a和q一样
(id_1: a, id_2: q)
Run Code Online (Sandbox Code Playgroud)
b独自喜欢
(id_1: b)
Run Code Online (Sandbox Code Playgroud)
和c和w一样(id_1:c id_2:w)
我试着用这个正则表达式
(?:\b(?P<id_1>a|b|c)\b(?:.*?)(?P<id_2>q|w)?\b)
Run Code Online (Sandbox Code Playgroud)
因为懒惰的算子.*?正则表达式只匹配句子的第一部分,仅匹配
(id_1: a, id_1: b, id_1: c)
Run Code Online (Sandbox Code Playgroud)
如果我们使用贪婪的运算符使表达式成为
(?:\b(?P<id_1>a|b|c)\b(?:.*)(?P<id_2>q|w)?\b)
Run Code Online (Sandbox Code Playgroud)
它匹配
(id_1: a)
Run Code Online (Sandbox Code Playgroud)
之后的所有内容都匹配为.*.
如果第二部分是强制性的(懒惰的话.*):
(?:\b(?P<id_1>a|b|c)\b(?:.*?)(?P<id_2>q|w)\b)
Run Code Online (Sandbox Code Playgroud)
它匹配句子
(id_1: a, id_2: q);(id_1: b, id_2: w)
Run Code Online (Sandbox Code Playgroud)
正如所料.
它可以使用正则表达式"更喜欢"匹配整个句子(包括选装件)或只有第一部分匹配ONLY如果可选的一个缺失.
编辑: 对不起,提供的正则表达式中有一些错误.
最后一个正则表达式是:
(?:\b(?P<id_1>a|b|c)\b(?:.*?)(?P<id_2>q|w)\b)
Run Code Online (Sandbox Code Playgroud)
并且它要求两个组都是强制性的.它匹配"某事物*w",但它与"某物*"或"a"不匹配.我需要匹配"a**w"以及"a"和"a w"并分别获得匹配组:
(id_1: a , id_2: w) ; (id_1: a, id_2: none) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为 AJAX 调用实现一个 jQuery 默认 HTTP 错误处理程序。我已经为通用应用程序错误实现了默认错误处理程序,如下所示:
$(document).ajaxError(function(event, jqXHR, settings, thrownError) {
switch (jqXHR.status) {
case 403:
console.log('Forbidden, go away!');
break;
case 404:
console.log('Resource not found :O');
break;
case 422:
console.log('Unprocessable entity.');
break;
case 500:
console.log('Someone have to pay for this!');
break;
default:
console.log('Anyone knows what is going on here?');
}
});
Run Code Online (Sandbox Code Playgroud)
现在我想要实现的是在单个 AJAX 调用中覆盖特定的状态代码。例如
$.ajax({
...
error: function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status === 404){
console.log('The requested unicorn is actually missing');
}
}
})
Run Code Online (Sandbox Code Playgroud)
现在,如果我如上所示执行,将显示两条消息
>The requested unicorn is actually …Run Code Online (Sandbox Code Playgroud)