jquery中具有有限特殊字符的正则表达式

pat*_*tel 1 html javascript regex validation jquery

我想所有字母数字数据 + 只允许以下 4 个特殊字符。

' (single quote)
- (hyphen)
. (dot)
 single space
Run Code Online (Sandbox Code Playgroud)

我试过这个:

var userinput = $(this).val();
var pattern = [A-Za-z0-9_~\-!@#\$%\^&\*\(\)]+$

if(!pattern.test(userinput))
{
  alert('not a valid');
}?
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

Ste*_*ppo 5

首先,您需要将字符串括起来/以将其解释为正则表达式:

var pattern = /[A-Za-z0-9_~\-!@#\$%\^&\*\(\)]+$/;
Run Code Online (Sandbox Code Playgroud)

然后,您必须删除一些不允许的字符(该正则表达式匹配的比您指定的多):

var pattern = /^[A-Za-z0-9 '.-]+$/;
Run Code Online (Sandbox Code Playgroud)

第二个是你需要的。完整代码:

var userinput = $(this).val();
var pattern = /^[A-Za-z0-9 '.-]+$/;

if(!pattern.test(userinput))
{
  alert('not a valid');
}?
Run Code Online (Sandbox Code Playgroud)

此外,检查this指向什么。