我有一个搜索框,我需要抓取这个搜索的值,并匹配所有的DIV,其中data- *值是以搜索值开始的。正则表达式匹配包含给定的一系列字母或数字的所有字符串
案例:
搜索值:201
应该比赛:data-year="2011"
,data-year="2012"
,data-year="2013"
是否应失败:data-year="2009"
,data-year="2001"
这就是我想出与如此f ar:
\\b(?=\\w*[" + token + "])\\w+\\b
token
是来自搜索框的动态值。因此,我需要使用RegExp
这是行得通的,但它匹配所有包含2或0或1(我的理解)的值。所以2009年也是有效的比赛。 :/
我也试着在一开始,以匹配characthers只是在世界的开始,但显然我在这里失去了一些东西,添加插入符:
^\\b(?=\\w*[" + token + "])\\w+\\b
完整的代码:
var token = '200'; // should fail
var tokenTwo = '201'; // shoudl work
var dataAtt = $('#div').data('year').toString();
var regexExpression ="^\\b(?=\\w*\\d*[" + token + "])\\w+\\d+\\b";
var regEXPRES = "^.*" + token + ".*$";
var regex = new RegExp(regexExpression, "i");
if(dataAtt.match(regex)){
console.log(dataAtt);
alert('yey!!!');
} else {
alert('nope!!)')
}
而这里的jsfiddle http://jsfiddle.net/tk5m8coo/
PS我不应该有任何其他字符在token
之前或之后的情况,但是如果有人知道如何检查这一点,那就太好了。只是在发生类似s2015的错字时。
不要乱用这个使用正则表达式 - 从您的输入创建适当的属性选择器,然后它是一个单一的jQuery调用,让你所有相关的元素。 https://api.jquery.com/category/selectors/attribute-selectors/ – CBroe
我同意使用属性选择器,但实际上并不需要为每个现代浏览器可以执行的操作使用jQuery ......例如, 'document.querySelectorAll('[data-year^=“201”]')' – hsan
谢谢你的回答。为什么你认为使用属性选择器更好? –