先举个例子,我想匹配<p>
标签里面的内容。
const str = `
<p>Para 1.</p>
<img src="smiply.jpg" />
<p>Para 2.</p>
<div>Div.</div>
`;
str.match(/(?<=<p>)\w*/g);
在这里,(?<=exp)
表示不匹配<p>
本身,匹配它后面的内容。
用于匹配带*.js文件的名字
const str = `
peng.jpg
li.jpg
heng.jpg
`;
str.match(/\b\w+(?=.jpg\b)/g);
先从贪婪匹配和惰性匹配说起,贪婪匹配从最多开始匹配,如果匹配不到,就开始回溯,惰性匹配从最少开始匹配,如果匹配不到,则回溯,
l从使用正则去掉字符串头尾空白去学习正则是一个不错的方式,因为我们有很多方式去实现它。
\s
表示空格,\S
表示非空格,这个对应其他的都一样\w
表示字母,\W
表示非字母
\s* // 0-∞个
\s+ // 1-∞个
\s{1,2} // 1-2个
\s{5,} // 5-∞个
' 23232 '.trim() //尽管浏览器实现它很简单。这种方法浏览器对它经过了底层优化,所以它比所有方法都快
' hi yours '.replace(/^\s+/,'').replace(/\s+$/,'')
|
这个油管符号,以及全局匹配' hi yours '.replace(/^\s+|\s+/g,'')
([\s\S]*?)
是惰性匹配' hi yours '.replace(/^\s*([\s\S]*?)\s*$/,'$1');
([\s\S]*?)
是贪婪匹配' hi yours '.replace(/^\s*([\s\S]*\S)?\s*$/,'$1')
' hi yours '.replace(/^\s*(\S*(\s+\S+)*)?\s*$/,'$1')