js RegExp对象n{X},n{X,Y},n+等量词应用,正则学习踩坑之量词

js RegExp对象n{X},n{X,Y},n+等量词应用,正则学习踩坑之量词

W3cschool上面学习正则对象(RegExp),学习到量词这一块的时候,一直对n{X},n{X,Y}这两个量词很搞不懂,参考网上教程,发现描述的都比较模糊,或者很多是错误的解释,现在通过我自己的学习,写一个比较简单易理解的教程

先来看以下比较官方的文字解释
js RegExp对象n{X},n{X,Y},n+等量词应用,正则学习踩坑之量词

1、例子

//html代码
<input type="text" id='regEle' value="www">
//javascript代码
//n{X}
<script>
	let regEle = document.getElementById('regEle');
	let val = regEle.value;
	let reg = '';
	reg = new RegExp(/w{3}/,'g');//匹配包含3个W的字符串
	console.log(reg.test(val)) ; 
	console.log(val.match(reg)); 
</script> 

js RegExp对象n{X},n{X,Y},n+等量词应用,正则学习踩坑之量词
这个例子很好理解,只有出现三个‘w’就会匹配成功。
2、例子
改一下输入框的值,正则不变

//html代码
<input type="text" id='regEle' value="w w w">

js RegExp对象n{X},n{X,Y},n+等量词应用,正则学习踩坑之量词
匹配失败,同样是出现了三次‘w’。
对比value="w w w"和 value=“www”,再结合官方的文档解释,其实是很好理解的,/w{3}/,匹配的是3个连续‘w’组成的字符串,而不是匹配3个‘w’,所以要把n{X}理解为,X个n组成的字符串,而不是把X当做区间去理解。

3、例子
再举个例子

//html代码
<input type="text" id='regEle' value="kesu kesu kesu">
//javascript代码
//n{X}
<script>
	let regEle = document.getElementById('regEle');
	let val = regEle.value;
	let reg = '';
	reg = new RegExp(/kesu{3}/,'g');//匹配包含3个kesu的字符串
	console.log(reg.test(val)) ; 
	console.log(val.match(reg)); 
</script> 

js RegExp对象n{X},n{X,Y},n+等量词应用,正则学习踩坑之量词
我还以为会匹配成功,然后返回三个‘kesu’字符串的,然而并没有。好像n{x}是不支持n表达式是组合字符串的,只能是元字符或者单个数字或单个字母

以下是元字符
js RegExp对象n{X},n{X,Y},n+等量词应用,正则学习踩坑之量词