一、"?"
你没有看错,就是黑人问号中的问号,这个字符在正则里面算是一个入门中很容易被带偏的点了。首先要知道什么是正则中的量词。
1.量词
在正则中,通常要表示一个表达式匹配的数量,这个时候量词就登场了。
主要会使用以下几个量词
/(\w)*/.exec(str) // 匹配任意次
/(\w)+/.exec(str) // 匹配一次到多次
/(\w)?/.exec(str) // 匹配零到一次(记住这里问号的用法!)
/(\w){
2, 4}/.exec(str) // 匹配两次到四次
/(\w){
2, }/.exec(str) // 匹配两次以上
我们可以发现,在这里"?"作为一个量词来使用,表示匹配零到一次。
接下来要理解下一个概念:贪婪匹配
2.贪婪匹配
搜了一下wiki,貌似没有相关的词条,通俗的解释,贪婪匹配模式下,会尽可能多地匹配满足条件的字符。而正则默认是贪婪模式的。
举个例子。比如我要匹配"suuuuuuuuuuck"字符中的s和k中间的字符。并没有什么问题。
let result = "suuuuuuuuuuck".match(/s(.*)k/)[1]
// uuuuuuuuuuc