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

时间:2011-07-28 20:09:49

标签: javascript regex

我正在尝试这个

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

但无论我在字符串

中添加什么,它都会给我true

1 个答案:

答案 0 :(得分:7)

这是因为你的正则表达式意味着“任何 不是字母而不是数字。” 所有字符至少满足其中一个条件。我怀疑你真正想要的是这个:

/[^A-Za-z0-9]/

这意味着“任何 不是字母而不是数字。”看到区别?

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

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

/[a-z0-9]/i