簡體   English   中英

正則表達式匹配包含給定系列字母或數字的所有字符串

[英]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')
}

更新了JS Fiddle

你的正則表達式使用的字符類將匹配方括號內的任何字符。 刪除方括號:

^\\b(?=\\w*" + token + ".*)\\w+\\b 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM