我没有正则表达式极客,而且我一直在寻找,但我真的不知道如何做到这一点:
我需要使用看起来像mywordsomenumber
的ID获取所有输入。例如,匹配ID为keyword1
keyword2
等的所有输入
我试过
a=$("[id^=tokenfield(\d+)]");
a=$("[id^=tokenfield(0-9)]");
和其他一些人,但我对正则表达式并没有很好的理解,似乎我无法理解它的底部
有人可以帮忙吗?感谢
答案 0 :(得分:3)
我认为您不能使用RegEx来匹配属性。 [id ^ = tokenfield]将开始的属性与完全字符串'令牌字段'进行匹配。这是"以"开头?匹配,而不是"正则表达式匹配"。
您可以使用手动过滤器。
这是一个JSFiddle:http://jsfiddle.net/itsananderson/U233z/
基本上,您会找到以固定文本开头的所有元素("项目"在示例中),然后根据以数字结尾的ID的实际正则表达式匹配进行过滤。
var a = $('[id^=item]').filter(function() {
return $(this).attr('id').match(/item[0-9]+/);
});
编辑:注意到有人已经在评论中给出了类似的答案。无论如何,希望这对某人有用
答案 1 :(得分:0)
jQuery' Atribute starts with selector不支持正则表达式,它只适用于完全字符串。
您可以选择以"tokenfield"
开头的节点,然后在javascript中执行额外检查:
$('[id^="tokenfield"]').filter(function(){
// extract the remaining part :
var tail = this.id.slice(10); // 10 == "tokenfield".length
// run it through parseInt :
var number = parseInt(tail, 10);
// isNaN will tell you if the parseInt failed :
var isNumber = !isNaN(number);
return isNumber;
});
但是,正如文档中所述:
此选择器可用于标识由生成具有系统元素ID的HTML的服务器端框架生成的页面中的元素。但是它会比使用类选择器慢,所以如果可以的话,可以利用类来对类似的元素进行分组。
如果您可以控制生成html的代码,那么最好生成具有以下结构的节点:
<div class="tokenfield" data-token="123"></div>
<div class="tokenfield" data-token="456"></div>
<div class="tokenfield" data-token="789"></div>
用法示例:
$('.tokenfield').each(function(){
var number = $(this).attr('data-token');
// do something ...
});