[英]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:是否为负向后的等效项? )可以作为后向(替代示例)的解决方法,但是我无法使其正常工作。
我尝试将选择器修改为此:
$.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/
但这会返回所有文本中不包含's
元素。
我可以将match方法与回调函数一起使用吗? 如果没有,如何修改jQuery选择器以适应这种情况?
任何见识和帮助总是不胜感激。
谢谢!
如果表达式前面没有单引号,则应至少匹配一个s。
由于您确实不想使用匹配项,因此仅测试是否存在匹配项,因此您实际上不需要后顾之忧。 您只需要确保它在字符串的开头即可工作。
(?:^|[^'])(s|otherword)s?\b
仅此而已。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.