我喜欢 "从字符串中去除非字母数字字符。 [\]字符存在问题" 提供的解决方案,但是如何在保留空格的情况下执行此操作?
在清理完成后,我需要根据空格对字符串进行分词。
input.replace(/[^\w\s]/gi, '')
毫不客气地从另一个答案中窃取。字符类中的^
表示“不是”,因此这是“不是”\w
(等同于\W
)而不是空格字符(空格,制表符等)\s
。如果需要,您可以直接使用文本。
我知道这是一个老帖子,但它非常受欢迎,以至于在谷歌搜索中排名靠前。因此,作为一种替代方案,3limin4t0r的接受答案和评论激发了我的灵感:
.replace(/\W+/g, " ")
const input = document.querySelector("input");
const button = document.querySelector("button");
const output = document.querySelector("output");
button.addEventListener("click", () => {
output.textContent = input.value.replace(/\W+/g, " ");
})
<input>
<button>Replace</button>
<p>
<output></output>
</p>
[^\w]
=\W
,而[^\s]
=\S
。因此正则表达式可以简化为/[\W\S]/g
。忽略大小写修饰符不是必须的,因为\W
已经考虑到了这些内容。 - 3limin4t0r