zhangxinxu / quiz

小测答题收集区
536 stars 43 forks source link

JS基础测试46期 #71

Open zhangxinxu opened 4 years ago

zhangxinxu commented 4 years ago

如果sb前后否不是英文和数字,则过滤成,如果前后是英文和数字,则忽略。 例如:你这个sb! -> 你这个! 请访问jsbin. -> 请访问jsbin.


大家提交回答的时候,注意缩进距离,起始位置从左边缘开始;另外,github自带代码高亮,所以请使用下面示意的格式(1积分)。

```js
// 你的JS代码写在这里
 ```

本期小测会以要点形式进行回复。

LuckyRabbitFeet commented 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
zy017 commented 4 years ago
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')) // **! **
livetune commented 4 years ago
var filterText = (str)=>str.replace(/(?!=\w|\d)sb(?!\d|\w)/g,'**')
console.log(filterText('请访问jsbin. sb 你这个sb!'))
zer0fire commented 4 years ago
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')) // **! **
liyongleihf2006 commented 4 years ago
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, '**')
}
xxf1996 commented 4 years ago
/**
 * 屏蔽句子中的某些词
 * @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'))
})
ziven27 commented 4 years ago

正则是我的弱项,打个卡,惭愧了