我有一个搜索框,我需要获取此搜索的值,并匹配数据 - *值以搜索值开头的所有DIV。
例:
搜索值:201
匹配:data-year="2011"
,data-year="2012"
,data-year="2013"
失败:data-year="2009"
,data-year="2001"
这是我到目前为止所提出的:
\\b(?=\\w*[" + token + "])\\w+\\b
token
是搜索框中的动态值。因此我需要使用RegExp
这是有效的,但它匹配包含2或0或1的所有值(据我所知)。所以2009年也是有效的比赛。 :/
我也尝试在开头添加插入符号,以便在世界开始时匹配字符,但显然我在这里遗漏了一些东西:
^\\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/
P.S。我不应该有token
在其他角色之前或之后的任何情况,但如果有人知道如何检查这个,那将是很好的。只是在任何像s2015这样的拼写错误的情况下。
答案 0 :(得分:1)
问题在于,当您通过绕[...]
包围正则表达式时,将搜索值放在字符类中。
你也不需要前瞻。你可以使用:
var regex = new RegExp("\\b\\w*" + value + "\\w*\\b");
确保搜索值与完整单词匹配。 (\w
也包含数字,因此无需使用\d
)。
完整代码:
var value = '20'; //token
var html = $("#div").html(); //data.()
var dataAtt = $('#div').data('year').toString();
var regex = new RegExp("\\b\\w*" + value + "\\w*\\b");
if( dataAtt.match(regex) ){
console.log(dataAtt + " matched");
} else {
console.log('nope')
}
答案 1 :(得分:0)
或者您可以使用indexOf()
:
var value = '20';
var html = $("#div").html();
var dataAtt = $('#div').data('year').toString();
if( dataAtt.indexOf(value) >= 0 ){
console.log('yey!!!');
} else {
console.log('nein!! )')
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id ="div" data-year="2015">
what bozo where 2015
</div>
答案 2 :(得分:0)
您的正则表达式使用的字符类将匹配方括号内的任何字符。删除方括号:
^\\b(?=\\w*" + token + ".*)\\w+\\b