0

我想在键入时替换字符串中每个出现的单词,

这就是我断章取义的内容...

$(document).on('keyup','textarea', function() {
    this.value=this.value.replace(/\bnot\b$/gi,"_-Ni!-_ ");
});

因此,每次您在文本区域中键入时,这都会替换单词“not”,

我使用正则表达式来避免用“另一个”之类的词替换“不”,

我现在遇到的问题是,如果您的打字机比运行的脚本慢,该函数会替换以 not 开头的单词,

所以像'noteworthy'这样的词在输入'eworthy'之前就被改变了,

我想指定每个可能的结尾词场景,例如换行符、空格、标点符号等,但我转而查看是否有更简单的方法并且找不到,所以在我在后面添加了一些特殊字符之前我想我会问社区他们是否知道方法

4

2 回答 2

1

要确保 thenot是一个完整的单词,您需要再等待一个字符并确保它不是单词字符:

(document).on('keyup','textarea', function() {
    this.value=this.value.replace(/\bnot(?=\W$)/gi, "_-Ni!-_ ");
});

请注意\w\W和都将\b“单词字符”理解为字母、数字和下划线。如果你想要字母,你需要像这样改变它:

/\bnot(?=[^a-z]$)/gi

对于这个词的开头,您需要更加努力,因为后向不是 ECMAScript 正则表达式风格的一部分:

/(^|[^a-z])not(?=[^a-z]$)/gi

并替换为

"$1_-Ni!-_ "

它写回前一个字符。

于 2013-07-27T10:45:40.000 回答
0

尝试

/\bnot\b\s

“\s”指的是空格。这只会匹配单词“not”本身。

于 2013-07-27T10:27:23.453 回答