[英]Check if id matches pattern
我不是正則表達式極客,我已經搜索了一段時間,但我真的不知道該怎么做:我需要獲取所有輸入,其ID類似於mywordsomenumber
。 例如,將所有輸入與id keyword1
keyword2
等匹配。
我試過了
a=$("[id^=tokenfield(\d+)]");
a=$("[id^=tokenfield(0-9)]");
和其他一些,但是我對正則表達式的理解不是很充分,而且似乎無法深入了解正則表達式
有人可以幫忙嗎? 謝謝
我認為您不能使用RegEx來匹配屬性。 [id ^ = tokenfield]匹配以精確字符串'tokenfield' 開頭的屬性。 這是“開頭為”匹配,而不是“正則表達式匹配”。
您可以使用手動過濾器。
這是一個JSFiddle: http : //jsfiddle.net/itsananderson/U233z/
基本上,您會找到所有以固定文本開頭的元素(示例中為“ item”),然后根據實際的正則表達式匹配項過濾以數字結尾的id。
var a = $('[id^=item]').filter(function() {
return $(this).attr('id').match(/item[0-9]+/);
});
編輯 :剛注意到有人已經在評論中給出了類似的答案。 無論如何,希望這對某人有用
jQuery的Atribute以選擇器開頭不支持正則表達式,它僅適用於確切的字符串。
您可以選擇以"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;
});
但是,如docs中所述:
此選擇器對於標識由服務器端框架生成的頁面中的元素很有用,該服務器端框架生成具有系統元素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 ...
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.