quiz icon indicating copy to clipboard operation
quiz copied to clipboard

JS基础测试46期

Open zhangxinxu opened this issue 5 years ago • 7 comments
trafficstars

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


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

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

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

zhangxinxu avatar Apr 08 '20 11:04 zhangxinxu

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

LuckyRabbitFeet avatar Apr 08 '20 12:04 LuckyRabbitFeet

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')) // **! **

zy017 avatar Apr 08 '20 13:04 zy017

var filterText = (str)=>str.replace(/(?!=\w|\d)sb(?!\d|\w)/g,'**')
console.log(filterText('请访问jsbin. sb 你这个sb!'))

livetune avatar Apr 08 '20 14:04 livetune

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')) // **! **

zer0fire avatar Apr 08 '20 14:04 zer0fire

demo

function filterKeyword(str,key = 'sb'){
   var reg = new RegExp(`(?<![0-9A-Za-z])${key}(?![0-9a-zA-Z])`,'ig')
  return  str.replace(reg, '**')
}
var a = filterKeyword('sb啊sb')
console.log(a)

Valar103769 avatar Apr 10 '20 07:04 Valar103769

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, '**')
}

liyongleihf2006 avatar Apr 10 '20 13:04 liyongleihf2006

/**
 * 屏蔽句子中的某些词
 * @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'))
})

xxf1996 avatar Apr 13 '20 01:04 xxf1996

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

ziven27 avatar May 11 '20 13:05 ziven27