javascript - 不要将数字或单词替换为下划线,而是保留破折号并删除其周围的空格

所以我得到了这个字符串

'word word - word word 24/03/21'

我想把它转换成

'word_word-word_word_24_03_21'

我试过了

replace(/[^aA-zZ0-9]/g, '_')

但是我得到了这个

word_word___word_word_24_03_21

最佳答案

您可以使用 2 个 .replace() 调用:

const s = 'word word - word word 24/03/21'
var r = s.replace(/\s*-\s*/g, '-').replace(/[^-\w]+/g, '_')

console.log(r)
//=> "word_word-word_word_24_03_21"

解释:

  • .replace(/\s*-\s*/g, '-'):移除连字符周围的空格
  • .replace(/[^-\w]+/g, '_'): 用下划线替换所有不是连字符和单词字符的字符

https://stackoverflow.com/questions/66785360/

相关文章:

javascript - 如何使用react router dom显示详细信息页面

python - Pandas 在特定列的行上创建中位数

delphi - GDI+ DrawLine 什么都不画

heroku - Unresolved 导入 `core::task::Wake`

rust - 为什么 Rust 元组不使用方括号访问里面的元素?

user-interface - 在 TreeView Odoo 13 之外添加按钮

go - 为什么在地址上取消引用会在 golang 中产生 "invalid indirect"错误

python - Pandas:Groupby 并使用剩余的列名和值创建字典

python-3.x - 根据索引和标签转换数据框

c# - 用源发生器代替反射