[英]Regex to match substring containing 18 digits but don't match if it starts with @
[英]Regex match all strings containing a given series of letters or digits
我有一個搜索框,我需要獲取此搜索的值,並匹配所有數據 - *值以搜索值開頭的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/
ps我不應該有token
在其他角色之前或之后的任何情況,但如果有人知道如何檢查這個,那將是很好的。 只是在任何拼寫如s2015的情況下。
或者你可以使用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>
問題是當你通過纏繞[...]
封裝你的正則表達式時,你將你的搜索值放在一個字符類中。
你也不需要前瞻。 你可以使用:
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')
}
你的正則表達式使用的字符類將匹配方括號內的任何字符。 刪除方括號:
^\\b(?=\\w*" + token + ".*)\\w+\\b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.