Open zhangxinxu opened 4 years ago
const keywordFilter = (str) => {
return str.replace(/\Wsb\W?/gi, (keyword) => {
return keyword.replace('sb', '**')
})
}
console.log(keywordFilter('你这个sb!'))
console.log(keywordFilter('请访问jsbin.'))
修改了下,单独的 sb 也能和谐掉了
const keywordFilter = (str) => {
return str.replace(/.?sb.?/gi, (keyword) => {
if (/\wsb/gi.test(keyword) && /sb\w/gi.test(keyword)) {
return keyword
} else {
return keyword.replace('sb', '**')
}
})
}
console.log(keywordFilter('你这个sb!')) // 你这个**!
console.log(keywordFilter('请访问jsbin.')) // 请访问jsbin.
console.log(keywordFilter('sb')) // **
console.log(keywordFilter('j sb in')) // j ** in
function filterKeyword(str, keyword='sb') {
var reg = eval(`/(?<![0-9a-zA-z])${keyword}(?![0-9a-zA-z])/gi`)
return str.replace(reg, '**')
}
console.log(filterKeyword('你这个sb!')) // 你这个**!
console.log(filterKeyword('请访问jsbin.')) // 请访问jsbin.
console.log(filterKeyword('sb')) // **
console.log(filterKeyword('sb! sb')) // **! **
var filterText = (str)=>str.replace(/(?!=\w|\d)sb(?!\d|\w)/g,'**')
console.log(filterText('请访问jsbin. sb 你这个sb!'))
function dirtyfilter (str) {
return str.replace(/(?<!\d|\w)(sb|SB)(?!\w|\d)/g,'**')
}
console.log(dirtyfilter('你这个sb!')) // 你这个**!
console.log(dirtyfilter('请访问jsbin.')) // 请访问jsbin.
console.log(dirtyfilter('sb')) // **
console.log(dirtyfilter('sb! sb')) // **! **
var str = "你这个sb! sb sb! jsbin jsb sbi 个sb sb! SB JSBIN"
console.log(shield(str))
function shield(str, key = 'sb') {
var reg = new RegExp(`(?<=[^0-z])${key}(?=[^0-z])`, 'gi')
return str.replace(reg, '**')
}
/**
* 屏蔽句子中的某些词
* @param {string} sentence 待审核句子
* @param {string} word 屏蔽词
*/
function filterWord (sentence, word) {
const star = new Array(word.length).fill('*').join('')
const reg = new RegExp(`((?<=\\W+)${word}(?=\\W+))|(^${word}(?=\\W+))|((?<=\\W+)${word}$)|(^${word}$)`, 'g')
return sentence.replace(reg, star)
}
const demo = [
'!!!sb',
'sb!',
'sb',
'sbsbsbsb',
'祖安问候:sb!',
'holysb',
'1sbc',
'csb2',
'#sb#'
]
demo.forEach(item => {
console.log(filterWord(item, 'sb'))
})
正则是我的弱项,打个卡,惭愧了
如果sb前后否不是英文和数字,则过滤成,如果前后是英文和数字,则忽略。 例如:你这个sb! -> 你这个! 请访问jsbin. -> 请访问jsbin.
大家提交回答的时候,注意缩进距离,起始位置从左边缘开始;另外,github自带代码高亮,所以请使用下面示意的格式(1积分)。
本期小测会以要点形式进行回复。