Javascript 如何编写正则表达式来匹配既不是字母也不是数字的东西?
我在试这个Javascript 如何编写正则表达式来匹配既不是字母也不是数字的东西?,javascript,regex,Javascript,Regex,我在试这个 str = "bla"; /([^A-z]|[^0-9])/.test(str.charAt(0)); 但不管我在字符串中输入什么,它都是真的,因为你的正则表达式表示任何不是字母或数字的东西。所有字符至少满足其中一个条件。我想你真正想要的是: /[^A-Za-z0-9]/ 这意味着任何既不是字母也不是数字的东西。看到区别了吗 作为旁注,[a-z]是不正确的。[A-Z]和[A-Z]是两个不同的字符集,从技术上讲,它们之间没有定义的延续。有些正则表达式引擎会让你逃脱惩罚,但有些会抛出
str = "bla";
/([^A-z]|[^0-9])/.test(str.charAt(0));
但不管我在字符串中输入什么,它都是真的,因为你的正则表达式表示任何不是字母或数字的东西。所有字符至少满足其中一个条件。我想你真正想要的是:
/[^A-Za-z0-9]/
这意味着任何既不是字母也不是数字的东西。看到区别了吗
作为旁注,[a-z]是不正确的。[A-Z]和[A-Z]是两个不同的字符集,从技术上讲,它们之间没有定义的延续。有些正则表达式引擎会让你逃脱惩罚,但有些会抛出错误或做一些你不想做的事情
无论大小写,从A到Z写任何字母的正确方法是[A-Za-Z]。或者,您可以使用i标志使您的正则表达式不区分大小写,在您的情况下:
/[a-z0-9]/i
当然,因为每个字符不是字母就是数字。试试看!哦,A-z不是你想的那样