我正在尝试这个
str = "bla";
/([^A-z]|[^0-9])/.test(str.charAt(0));
但无论我在字符串
中添加什么,它都会给我true
答案 0 :(得分:7)
这是因为你的正则表达式意味着“任何 不是字母或而不是数字。” 所有字符至少满足其中一个条件。我怀疑你真正想要的是这个:
/[^A-Za-z0-9]/
这意味着“任何 不是字母和而不是数字。”看到区别?
作为旁注,[A-z]
不正确。 [A-Z]
和[a-z]
是两个不同的字符集,技术上不是它们之间定义的延续。一些正则表达式引擎会让你逃避这一点,但有些会抛出错误或做你不想要的事情。
写“从A到Z的任何字母,无论情况如何”的正确方法是[A-Za-z]
。或者您可以使用i
标志使您的正则表达式不区分大小写,在您的情况下将是:
/[a-z0-9]/i