首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery匹配正则表达式

jQuery匹配正则表达式
EN

Stack Overflow用户
提问于 2012-03-27 10:45:20
回答 3查看 97.7K关注 0票数 18
代码语言:javascript
复制
var playerClass = $(this).parent().attr('class')

关于只从dom中选择特定类的问题。

我可以在这行中添加什么,以仅选择具有player-1、player-2类的类,基本上是任何前缀为player-后跟数字的类?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-27 11:14:08

我不能准确地说出你的问题是什么,所以这里有四种可能性。希望其中一个与您想要的匹配,或者您可以稍微修改其中一个以满足您的要求。

要选择类为player-xx的所有输入项,其中xx是一个数字,您可以执行以下操作:

代码语言:javascript
复制
var playerClass = $('input[class^="player-"]').filter(function() {
    return((" " + this.className + " ").match(/\splayer-\d+\s/) != null);
});

第一个jQuery选择器获取所有以"player-"开头的类名。然后,筛选器会排除所有不是"player-nn"的项目。

如果你只想检查一个特定的类名是否包含player-nn,那么你可以这样做:

代码语言:javascript
复制
if ((" " + $(this).parent().attr('class') + " ").match(/\splayer-\d+\s/) != null) {
    // the parent has player-nn as a class
}

如果你只想在父类上获得匹配的类,你可以这样做:

代码语言:javascript
复制
var matches = (" " + $(this).parent().attr('class') + " ").match(/\s(player-\d+)\s/);
if (matches) {
    playerClass = matches[1];
}

如果你想在player-之后实际获取数字,你可以这样做:

代码语言:javascript
复制
var matches = (" " + $(this).parent().attr('class') + " ").match(/\splayer-(\d+)\s/);
if (matches) {
    playerNum = parseInt(matches[1], 10);
}

注意:所有这些示例都使用了一个技巧(这是我从jQuery学到的),如果您在整个类名的开头和结尾添加一个空格,那么您可以通过查找由空格围绕在两侧的特定类名来查找带有正则表达式的给定类名。这可以确保您不会匹配较长类名的一部分,而只匹配整个类名。jQuery在它的.hasClass()实现中使用了这个技巧。

票数 43
EN

Stack Overflow用户

发布于 2012-03-27 10:56:57

我想这就是你需要的:

代码语言:javascript
复制
var playerClass = $(this).parent().attr('class').match(/player-\d+/);
票数 5
EN

Stack Overflow用户

发布于 2012-03-27 10:54:37

要选择类名以"player-“开头的所有input元素,可以使用以下命令:

代码语言:javascript
复制
var playerClass = $('input[class^="player-"]');

“starts with”选择器的描述如下:http://api.jquery.com/attribute-starts-with-selector/

但这并不能确保"player-“后面紧跟一个数字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9882693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档