Javascript Jquery replace不处理整个输入文本

Javascript Jquery replace不处理整个输入文本,javascript,Javascript,我在HTML页面上有一个文本框,其想法是用户可以在框中输入任何文本,然后Jquery将删除字母表中除字母以外的每一个文本 这就是我所想到的,它适用于小文本样本,1-2行,然而,在这上面的任何东西它只适用于输入文本的一小部分,有更好的方法吗 $("#read").change(function () { read = $("#read").val().toLowerCase().replace(/[^a-z]+/, ''); $("#read").val(read); }); 将

我在HTML页面上有一个文本框,其想法是用户可以在框中输入任何文本,然后Jquery将删除字母表中除字母以外的每一个文本

这就是我所想到的,它适用于小文本样本,1-2行,然而,在这上面的任何东西它只适用于输入文本的一小部分,有更好的方法吗

$("#read").change(function () {
    read = $("#read").val().toLowerCase().replace(/[^a-z]+/, '');
    $("#read").val(read);
});

将/gi添加到正则表达式的末尾

/[^a-z]+/gi
然后,它将替换整个字符串中的所有引用

g(全局)和i(忽略情况)

在@Lunar的注释中,代码应该是这样的

$("#read").change(function () {
     $(this).val($(this).val().replace(/[^a-z]/gi, ''));
   });

将/gi添加到正则表达式的末尾

/[^a-z]+/gi
然后,它将替换整个字符串中的所有引用

g(全局)和i(忽略情况)

在@Lunar的注释中,代码应该是这样的

$("#read").change(function () {
     $(this).val($(this).val().replace(/[^a-z]/gi, ''));
   });

您需要启用正则表达式的全局标志,以便它将替换所有匹配项,而不仅仅是第一个匹配项


您需要启用正则表达式的全局标志,以便它将替换所有匹配项,而不仅仅是第一个匹配项


replace()
不是jquery方法。
replace()
不是jquery方法。@Lunar注意,
i
标志忽略大小写,所以你不需要
toLowerCase()
除非你希望你的输出是小写的。@Lunar也可以使用
this.value=this.value.replace(/[^a-z]/gi')
。实际上不需要函数体中的所有jQuery。另外请注意,
+
是不必要的,因为您已经设置了
g
(尽管设置它也没有什么坏处)。@Lunar注意,
i
标志忽略大小写,所以您不需要
toLowerCase()
,除非您希望输出是小写的。@Lunar也可以使用
this.value=this.value.replace(/[^a-z]/gi,”)
。实际上不需要函数体中的所有jQuery。还请注意,
+
是不必要的,因为您已经设置了
g
(尽管设置它也没有坏处)。