正则表达式 - 只允许英文(小写或大写)、数字、特殊字符

hin*_*ner 4 javascript regex

我试图限制用户的输入如下。

\n\n
    \n
  1. 英文字符(a 到 z 或 A 到 Z)
  2. \n
  3. 数字字符(0 到 9)
  4. \n
  5. 所有特殊字符 (~`!@#$%^&*()_+-=[]{}|;\':",./<>?)
  6. \n
\n\n

我想阻止用户输入非英文字符(如中文、韩文等)。

\n\n
export const isValidPasswordChar = str => {\n  const regex = /^[~`!@#$%^&*()_+\\-=\\[\\]\\\\{}|;\':",./<>?a-zA-Z0-9]$/;\n  if(regex.test(str)){\n    return false\n  }\n  return true;\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

和单元测试

\n\n
it(\'should not allow foreign chars-1\', ()=>{\n    const str = \'\xec\x95\x88\';\n    expect(isValidPasswordChar(str)).toBe(false);\n  });\n
Run Code Online (Sandbox Code Playgroud)\n\n

上述单元测试以前有效,但由于某种原因,单元测试一直失败。我在这里缺少什么吗?

\n

Cod*_*iac 6

你走在正确的道路上

\n\n
^[~`!@#$%^&*()_+=[\\]\\\\{}|;\':",.\\/<>?a-zA-Z0-9-]+$\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 你可以-在最后移动,所以不需要逃跑
  • \n
  • 除非] and / and \\你不需要转义其他字符
  • \n
\n\n

\r\n
\r\n
^[~`!@#$%^&*()_+=[\\]\\\\{}|;\':",.\\/<>?a-zA-Z0-9-]+$\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n