javascript 正则表达式回顾和 jQuery 选择器
javascript regex lookbehind and jQuery selector
我在 jQuery
的自定义选择器中使用以下正则表达式
$.expr[":"].matchRegex = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().match(new RegExp(arg, 'i')) != null;
};
});
但是,由于 javascript 不允许回溯,我无法通过此正则表达式:
/\b(?<!')(s|otherword)s?\b/
如果表达式前面没有单引号,则该表达式应至少匹配一个 s
。表达式中的 s|otherword
部分实际上是由用户提供的,所以我必须使用它。
我了解如何创建自定义函数 (Javascript: negative lookbehind equivalent?) 可以作为后视(替换示例)的解决方法,但我无法让它工作。
我尝试将我的选择器修改为:
$.expr[":"].matchRegex = $.expr.createPseudo(function(arg) {
return function( elem ) {
return ($(elem).text().match(new RegExp(arg, 'i')) != null) ? false : true;
};
});
并将正则表达式更改为:
/\b(')(s|otherword)s?\b/
但这将 return 所有文本不包含 's
.
的元素
我可以使用带有回调函数的匹配方法吗?如果不是,如何修改 jQuery 选择器以适应这种情况?
任何见解和帮助总是非常感谢。
谢谢!
The expression should match at least one s if it not preceded by a single quote.
因为您真的不想使用匹配项,如果有匹配项,则只测试,您不需要真的需要回顾一下。您只需要确保它在字符串的开头有效。
(?:^|[^'])(s|otherword)s?\b
就这些,真的。
我在 jQuery
的自定义选择器中使用以下正则表达式$.expr[":"].matchRegex = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().match(new RegExp(arg, 'i')) != null;
};
});
但是,由于 javascript 不允许回溯,我无法通过此正则表达式:
/\b(?<!')(s|otherword)s?\b/
如果表达式前面没有单引号,则该表达式应至少匹配一个 s
。表达式中的 s|otherword
部分实际上是由用户提供的,所以我必须使用它。
我了解如何创建自定义函数 (Javascript: negative lookbehind equivalent?) 可以作为后视(替换示例)的解决方法,但我无法让它工作。
我尝试将我的选择器修改为:
$.expr[":"].matchRegex = $.expr.createPseudo(function(arg) {
return function( elem ) {
return ($(elem).text().match(new RegExp(arg, 'i')) != null) ? false : true;
};
});
并将正则表达式更改为:
/\b(')(s|otherword)s?\b/
但这将 return 所有文本不包含 's
.
我可以使用带有回调函数的匹配方法吗?如果不是,如何修改 jQuery 选择器以适应这种情况?
任何见解和帮助总是非常感谢。
谢谢!
The expression should match at least one s if it not preceded by a single quote.
因为您真的不想使用匹配项,如果有匹配项,则只测试,您不需要真的需要回顾一下。您只需要确保它在字符串的开头有效。
(?:^|[^'])(s|otherword)s?\b
就这些,真的。