Javascript 如何防止用户在复制粘贴操作时立即将包含无效字符的文本复制粘贴到输入文本字段?

Javascript 如何防止用户在复制粘贴操作时立即将包含无效字符的文本复制粘贴到输入文本字段?,javascript,onpaste,Javascript,Onpaste,我在网上和这里读到了一些关于堆栈溢出的答案,但我没有找到解决方案 我试图阻止用户将无效字符(a-z a-z字符以外的任何字符)复制粘贴到我的输入字段中。我不想在提交时执行此操作,但在复制粘贴事件时执行此操作 如果我复制了包含所有无效字符的粘贴文本(如“1234”),我的If块将被执行(regex测试失败),并且工作正常 但是,如果复制的文本包含混合的有效或无效字符(如“12abc”或“abc12”),则此操作无效 如何防止用户将带有无效字符的粘贴文本复制到我的输入文本中 我在输入文本元素上调用j

我在网上和这里读到了一些关于堆栈溢出的答案,但我没有找到解决方案

我试图阻止用户将无效字符(a-z a-z字符以外的任何字符)复制粘贴到我的输入字段中。我不想在提交时执行此操作,但在复制粘贴事件时执行此操作

如果我复制了包含所有无效字符的粘贴文本(如“
1234
”),我的If块将被执行(regex测试失败),并且工作正常

但是,如果复制的文本包含混合的有效或无效字符(如“
12abc
”或“
abc12
”),则此操作无效

如何防止用户将带有无效字符的粘贴文本复制到我的输入文本中

我在输入文本元素上调用javascript函数,如下所示:

函数validatePaste(e){
var regex=/[a-z]/gi;
var copiedText=e.clipboardData.getData('text'))
console.log(copiedText,regex.test(copiedText))
如果(!正则表达式测试(复制文本)){
e、 preventDefault();//仅当copiedText包含所有无效字符时才执行此行
返回false;
}
}

您只测试那里有一个字符

这里有一个更好的正则表达式-我们也不需要每次都分配它

const regex=/^[a-z]+$/gi;//gi使A-Z变得无关紧要
函数validatePaste(e){
const copiedText=e.clipboardData.getData('text'))
console.log(copiedText,regex.test(copiedText))
如果(!正则表达式测试(复制文本)){
e、 preventDefault();//如果copiedText包含任何无效字符,则执行此行
返回false;
}
}

您只测试那里有一个字符

这里有一个更好的正则表达式-我们也不需要每次都分配它

const regex=/^[a-z]+$/gi;//gi使A-Z变得无关紧要
函数validatePaste(e){
const copiedText=e.clipboardData.getData('text'))
console.log(copiedText,regex.test(copiedText))
如果(!正则表达式测试(复制文本)){
e、 preventDefault();//如果copiedText包含任何无效字符,则执行此行
返回false;
}
}
参考资料:

字符类([…])、锚(^和$)、重复(+,*)

/只是分隔符,它表示正则表达式的开始和结束。它的一个用途是现在您可以在其上使用修改器

函数validatePaste(e){
var regex=/^[a-zA-Z]*$/;
var copiedText=e.clipboardData.getData('text'))
如果(!正则表达式测试(复制文本)){
e、 preventDefault();//仅当copiedText包含所有无效字符时才执行此行
返回false;
}
}
参考资料:

字符类([…])、锚(^和$)、重复(+,*)

/只是分隔符,它表示正则表达式的开始和结束。它的一个用途是现在您可以在其上使用修改器

函数validatePaste(e){
var regex=/^[a-zA-Z]*$/;
var copiedText=e.clipboardData.getData('text'))
如果(!正则表达式测试(复制文本)){
e、 preventDefault();//仅当copiedText包含所有无效字符时才执行此行
返回false;
}
}

您的
是否有效
仅字符数字?因此,请使您的reg-exp匹配完整字符串您的
是否有效
仅字符数字?因此,请使您的reg-exp匹配完整字符串string@mplungjan非常感谢。你能解释一下为什么我的正则表达式失败了吗?是不是因为我遗漏了其中的“+$”?“+$”是什么意思?谢谢^=从字段开始,$到结束指一个或多个。这与使用*而不是+,有何不同?再次感谢Plus:一个或多个,*为0或多个。@mplungjan谢谢。你能解释一下为什么我的正则表达式失败了吗?是不是因为我遗漏了其中的“+$”?“+$”是什么意思?谢谢^=从字段开始,$到结束指一个或多个。这与使用*而不是+,有何不同?再次感谢Plus:一个或多个,*为0或多个。