比如校验字符串是否含有aa,只能是aa,且可以出现多次,如果字符串为a或者aaa,或aaaa等都判定为false,aa,aa判定为true我用(?!a)仍然无法判定
比如校验字符串是否含有aa,只能是aa,且可以出现多次,如果字符串为a或者aaa,或aaaa等都判定为false,aa,aa判定为true我用(?!a)仍然无法判定
[^a]*aa[^a]*
上面的还是有问题,重新写一个:
(?<!a)aa(?!a)
验证一下:
$ echo '
a
aa
caab
caaab'|grep -P '(?<!a)aa(?!a)'
aa
caab
参考大神的正则改的,不知道还有没有问题
$ echo '
a
aa
caab
caaab
aaabaa
aaabaaa'|grep -P '^[^a]*(?<!a)aa(?!a)'
aa
caab
/(?=^[^a]*aa(?![^a]*a))/
补完~
如果用别的语言,很简单:
python3
'(?!^.*(?<!a)a(?!a))(?!^.*aaa)(?=^.*aa)'
但是js的re引擎是个半残疾~ 不能这么写。写函数简单点:
arr.filter(s=>/a/.test(s) && s.match(/a+/g).every(x=>x.length==2))