【问题标题】:Using RegExp to dynamically create a Regular Expression, and filter content使用 RegExp 动态创建正则表达式,并过滤内容
【发布时间】:2011-10-21 03:44:04
【问题描述】:

我正在努力使用RegExp 对象来动态创建表达式,并将其应用于一组元素。

Here is a jsFiddle,下面是代码:

<div id='selectors'><span>A-F</span><span>G-L</span><span>M-S</span><span>T-Z</span></div>

<a hreh=#>Astring</a>
<a hreh=#>Cstring</a>
<a hreh=#>Xstring</a>
<a hreh=#>Dstring</a>
<a hreh=#>Zstring</a>

$('div#selectors span').click(function(){
        expression = "/^["+$(this).html()+"].*$/";

        rx = RegExp(expression,'i');
        console.log(rx,'expression');
        $("a").each(function(){

                    if($(this).html().match(rx) !== null){
                        $(this).addClass('selected');
                    }
        });

    })

【问题讨论】:

    标签: javascript jquery regex dom-manipulation


    【解决方案1】:

    JavaScript 会自动在表达式的末尾和开头添加“/”。从您的字符串中删除它们,Example Here

    $('div#selectors span').click(function () {
        var expression = "^[" + $(this).html() + "].*$";
        var rx = new RegExp(expression, 'i');
    
        console.log(rx, 'expression');
    
        $("a").each(function () {
            if ($(this).html().match(rx) !== null) {
                $(this).addClass('selected');
            }
        });
    
    });
    

    【讨论】:

    • 更准确地说,/ 表示正则表达式文字,但不是其中的一部分,例如 " 表示字符串文字,但不是字符串的一部分。
    • 不要忘记当正则表达式使用 \ 斜杠时,将它们转义为 \\
    猜你喜欢
    • 2014-09-16
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2021-08-24
    相关资源
    最近更新 更多