当前位置:  开发笔记 > 编程语言 > 正文

jQuery选择器正则表达式

如何解决《jQuery选择器正则表达式》经验,为你挑选了7个好方法。

我正在阅读使用jQuery选择器使用通配符或正则表达式(不确定的确切术语)的文档.

我自己一直在寻找,但一直无法找到有关语法和如何使用它的信息.有谁知道语法的文档在哪里?

编辑:属性过滤器允许您根据属性值的模式进行选择.



1> nickf..:

您可以使用该filter函数应用更复杂的正则表达式匹配.下面是这将只是比赛的前三个div的(现场演示的例子在这里):

$('div')
  .filter(function() {
    return this.id.match(/abc+d/);
  })
  .html("Matched!");


Not matched
Not matched
Not matched
Not matched


+1是一个简单的解决方案,不需要额外的库/插件.
在这里晚了3年,但我只是查找jQuery通配符,发现这非常有帮助.我讨厌在可以避免的情况下加载数百个库.这就是我首先使用jQuery的原因,就是在一些简单而强大的功能中融入我想要的所有功能.
@stevendesu:另外3年后,我还决定坚持这个答案,而不是用更多的选择器来膨胀jQuery.

2> Xenph Yan..:

James Padolsey创建了一个精彩的过滤器,允许正则表达式用于选择.

说你有以下内容div:

Padolsey的:regex过滤器可以选择它:

$("div:regex(class, .*sd.*)")

另外,查看选择器的官方文档.


来自nickf的答案应该是公认的答案.如果您正在阅读这个答案,请务必阅读该答案!
我收到错误:语法错误,无法识别的表达式:unsupported pseudo:regex
好.我去过那里,但我真的不知道我要找的名字.我有另一种外观,使用属性过滤器是我所追求的.
-1。实现此目的的代码未包含在答案中,并且容易受到链接腐烂的影响。另外,我在测试代码时发现了两个错误-它会从包含它们的正则表达式中删除逗号(通过将matchParams.join('')替换为matchParams.join(',')`来解决)以及任何匹配`'undefined'`或`'null'`将分别匹配`undefined`和`null`。第二个错误可以通过首先检查测试值“!== undefined”和“!== null”来解决。无论哪种方式,将函数传递到`.filter()`都更容易,对我来说更干净/更易读。

3> dnxit..:

这些可能会有所帮助.

如果你是通过Contains找到它那么就是这样的

    $("input[id*='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

如果您通过Starts With找到它,那么它就像这样

    $("input[id^='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

如果你是通过Ends With找到它那么就像这样

     $("input[id$='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

如果要选择id不是给定字符串的元素

    $("input[id!='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

如果要选择id包含给定单词的元素,则用空格分隔

     $("input[name~='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

如果要选择id等于给定字符串或以该字符串后跟连字符开头的元素

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });


很好的答案,但`id`是标识符,[不能包含空格](https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier),`〜=应将示例更改为其他名称,例如类,这是由空格分隔的标识符列表。像“类”之类的东西就是“〜=”属性选择器的目的。

4> Nicolas Jane..:

如果使用正则表达式仅限于测试attribut是否以某个字符串开头,则可以使用^ jquery选择器

例如,如果您只想选择ID为"abc"的div,则可以使用 $("div[id^='abc']")

可以在这里找到许多非常有用的选择器以避免使用正则表达式:http://api.jquery.com/category/selectors/attribute-selectors/



5> Kamil Dąbrow..:
var test = $('#id').attr('value').match(/[^a-z0-9 ]+/);

干得好!



6> brook hong..:

添加一个jQuery函数,

(function($){
    $.fn.regex = function(pattern, fn, fn_a){
        var fn = fn || $.fn.text;
        return this.filter(function() {
            return pattern.test(fn.apply($(this), fn_a));
        });
    };
})(jQuery);

然后,

$('span').regex(/Sent/)

将选择文本匹配/已发送/的所有span元素.

$('span').regex(/tooltip.year/, $.fn.attr, ['class'])

将选择所有span元素,其类匹配/tooltip.year/.



7> Jānis Elmeri..:

id和类仍然是属性,因此如果相应选择,可以对它们应用regexp属性过滤器.点击此处了解更多信息:http: //rosshawkins.net/archive/2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有