-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JS基础测试46期 #71
Comments
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'))
}) |
正则是我的弱项,打个卡,惭愧了 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
如果sb前后否不是英文和数字,则过滤成**,如果前后是英文和数字,则忽略。
例如:你这个sb! -> 你这个**!
请访问jsbin. -> 请访问jsbin.
大家提交回答的时候,注意缩进距离,起始位置从左边缘开始;另外,github自带代码高亮,所以请使用下面示意的格式(1积分)。
本期小测会以要点形式进行回复。
The text was updated successfully, but these errors were encountered: