Skip to content
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

Open
zhangxinxu opened this issue Apr 8, 2020 · 7 comments
Open

JS基础测试46期 #71

zhangxinxu opened this issue Apr 8, 2020 · 7 comments

Comments

@zhangxinxu
Copy link
Owner

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


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

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

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

@LuckyRabbitFeet
Copy link

LuckyRabbitFeet commented Apr 8, 2020

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
Copy link

zy017 commented Apr 8, 2020

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
Copy link

livetune commented Apr 8, 2020

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

@zer0fire
Copy link

zer0fire commented Apr 8, 2020

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
Copy link
Contributor

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
Copy link

xxf1996 commented Apr 13, 2020

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

ziven27 commented May 11, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants