利用正向预测限定字符的长度,/(?=^[\w\W]{10,20}$)/
,
在加上以asd结尾,/asd$/
。
两者分开判断都是正确的,合起来的话哪里出错了?
利用正向预测限定字符的长度,/(?=^[\w\W]{10,20}$)/
,
在加上以asd结尾,/asd$/
。
两者分开判断都是正确的,合起来的话哪里出错了?
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答872 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
我所了解的是
javascript
零宽断言仅支持后置断言,也就是后面跟没跟某些数据,至于前置断言的话正常也是使用?<=
,但是可惜JavaScript不支持,题主还是考虑使用其他的方法吧,如果题主只是想限制数量的话,把总数减去3不就可以了:那可以这么理解吧,
?=^[\w\W]{10,20}$)
这个零宽断言由于前面没有匹配项,而且匹配了开头和结束,但不占用匹配的结果,所以零宽断言能够匹配的就是开头的空字符'';这个可能不好理解,看看下面的代码:结果的确是匹配了开头的空格,所以这样的话正则后面的匹配也就是
/(?=^[\w\W]{10,20}$)asd$/
可以看作是''asd$
这样的,其中''这个是匹配的开头空字符,也就是说,/(?=^[\w\W]{10,20}$)asd$/
这个匹配的是空字符开头的,所以你在空字符后面需要继续匹配开头的部分,/(?=^[\w\W]{10,20}$)I have a dream a asd$/.test('I have a dream a asd')
也是true,所以就是由于匹配了开头的空字符所以整个匹配需要从头开始。