繁体   English   中英

javascript正则表达式lookbehind和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:是否为负向后的等效项? )可以作为后向(替代示例)的解决方法,但是我无法使其正常工作。

我尝试将选择器修改为此:

$.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM