如何编写正则表达式来匹配既不是字母也不是数字的东西?

ily*_*lyo 0 javascript regex

我正在尝试这个

str = "bla";
/([^A-z]|[^0-9])/.test(str.charAt(0));
Run Code Online (Sandbox Code Playgroud)

true无论我把它放在弦上,它都能给我

Jus*_*gan 7

这是因为你的正则表达式的意思是"什么是或者不是字母不是一个数字." 所有字符至少满足其中一个条件.我怀疑你真正想要的是这个:

/[^A-Za-z0-9]/
Run Code Online (Sandbox Code Playgroud)

这意味着"什么是两者不是一个字母,并没有一个数字." 看到不同?

作为旁注,[A-z]是不正确的.[A-Z]并且[a-z]是两个不同的字符集,并且在技术上它们之间没有定义的延续.一些正则表达式引擎会让你逃避这一点,但有些会抛出错误或做你不想要的事情.

写"从A到Z的任何字母,无论情况如何"的正确方法是[A-Za-z].或者您可以使用该i标志使您的正则表达式不区分大小写,在您的情况下将是:

/[a-z0-9]/i
Run Code Online (Sandbox Code Playgroud)