const str= `***:****-*****-***——**`
const reg= /(\*\*\*)/g
console.log(str.match(reg)) // ["***", "***", "***","***"]
怎么取固定长度的‘*’我只是想要长度为3个星号的字串(***)
要怎么才能取得呐?
const str= `***:****-*****-***——**`
const reg= /(\*\*\*)/g
console.log(str.match(reg)) // ["***", "***", "***","***"]
怎么取固定长度的‘*’我只是想要长度为3个星号的字串(***)
要怎么才能取得呐?
应该没啥好办法,不过可以通过匹配结果然后去取长度为 3
的结果。
比如说
const str= `***:****-*****-***——**`
const reg= /(\*){1,}/g
const result = str.match(reg).filter(item=>item.length==3)
console.log(result) // ["***", "***"]
但是这样就不知道字符串所在的位置了,如果你要做替换的话。
所以可以将 replace
/replaceAll
的第二个参数改为一个函数,那么稍微修一下:
const str= `***:****-*****-***——**`
const reg= /(\*){1,}/g
const newStr = str.replaceAll(reg, (match)=>{
if(match.length === 3) return '被替换'
return match
});
console.log(newStr) // '被替换:****-*****-被替换——**'
String.prototype.replace() - JavaScript | MDN
String.prototype.replaceAll() - JavaScript | MDN
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
str.match(/(?<=[^\*]|^)(\*{3})(?=[^\*]|$)/g)