我正在尝试创建一个函数来删除所有特殊字符(包括句点)(撇号除外),因为它们自然是单词的一部分。我制作的正则表达式模式应该删除不符合word
模式的所有内容,或者后跟撇号'
和/或另一个word
:
function removeSpecialCharacters(str) {
return str.toLowerCase().replace(/[^a-z?'?a-z ]/g, ``)
}
console.log(removeSpecialCharacters(`I'm a string.`))
console.log(removeSpecialCharacters(`I'm a string with random stuff.*/_- '`))
console.log(removeSpecialCharacters(`'''`))
从片段中可以看到,除了删除无赖撇号外,它运行良好。
如果我在模式中添加
[\s'\s]
或[']
之类的内容,则会完全破坏它。为什么这样做,我在这里想念什么? 最佳答案
用'\B
替换模式,该模式将匹配并删除不带单词字符(例如ab'
或ab'@
)的撇号,同时保留诸如ab'c
之类的字符串:
function removeSpecialCharacters(str) {
return str.toLowerCase().replace(/'\B|[^a-z'? ]/g, ``)
}
console.log(removeSpecialCharacters(`I'm a string.`))
console.log(removeSpecialCharacters(`I'm a string with random stuff.*/_- '`))
console.log(removeSpecialCharacters(`'''`))
(您也可以从字符集中删除重复的字符)