我正在尝试使用以下JavaScript RE匹配字符串,其中允许的字符是大写或小写字母,数字,超量( - )和句点(。)。下划线" _"不允许:
pattern = /^([a-zA-z0-9\-\.]+)$/
但是当我在Chrome控制台中运行测试时: pattern.test(" _linux&#34);
结果是真的,但根据我们的规则应该是假的。原因是什么?
答案 0 :(得分:9)
在你的正则表达式中,你写了A-z
(最后用z
小写)。在JavaScript正则表达式引擎中,这转换为字符代码65到122而不是所需的65到90.并且下划线字符在此范围内(字符代码95);见ASCII chart。将其更改为大写Z,使您的正则表达式:
^([a-zA-Z0-9\-\.]+)$