js Abba逆向前瞻正則匹配例項

技術國粹發表於2022-03-18

核心程式碼:

<script>
var s1 = 'acritan';
var s2 = 'bassarisk';
var s3 = 'commotive';
//找出不包含 "abba" 模式的單詞
var r = /^(?!.*?(.)(.)\2\1)/i;
alert(r.test(s1)); // true
alert(r.test(s2)); // false
alert(r.test(s3)); // false
</script>

零寬斷言(?!exp)

反先行斷言

什麼是反先行斷言,使用 ( ?!exp) 匹配後面跟的不是exp。

php例項:

主要是想通過例項給大家說下這個正則的作用

$str="abcgwcab";
$parent='/bc(?!ww)gw/';
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
輸出:
int 1
array (size=1)
 0 => string 'bcgw' (length=4)
*/

解析:首先判斷字串是否包含bc,然後判斷其後面不是ww,最後匹配gw。可以看出反向斷言之前後之後,能夠在新增其他匹配條件。

.*?

這個.*就是匹配非空字元任意長度,?就是非貪婪模式就是匹配最少的字元例如一個字元


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015104/viewspace-2872418/,如需轉載,請註明出處,否則將追究法律責任。

相關文章