正则表达式 - 排除字符和最小字母数

RegEx - Excluding characters and minimum count of letters

我在输入标签中使用 模式 编写了 javascript 表单验证。

我想在任何地方排除这些符号 ['<>{}$?!"] 并希望至少有 3 个字母 [a-z]{3,}。其他一切都应该被允许。(可能像 .*)

我的问题是它只排除了字母前的符号而忽略了字符串中间或末尾的符号。

<input type="text"
       name="name"
       maxlength=50
       pattern="^[^'<>{}$?!\x22]+[a-z]{3,}.*$"
       onChange="changi(this.parentNode.parentNode.id)"
       required /> 

例如应该是:

正确:

错:

您可以使用正面前瞻

^(?=(?:.*[a-z]){3})[^'<>{}$?!\x22]+$

Regex Demo


function handle() {
  alert('submitted')
}
<form onsubmit='handle()'>
  <input type='text' pattern="^(?=(?:.*[a-z]){3})[^'<>{}$?!\x22]+$"></input>
</form>

注意:- \n inside characters class in regex demo 仅用于说明目的,在您不需要输入的情况下使用那