整个字符串不包含某个字符或者某一群字符/^.*$/
注:在字符组内[],除了一些特殊字符,一般都解析为普通字符,不需要转义,后面的有些地方写的不对,但是也懒得改了
[^+ -*/] 就是这种
表示字符全体
先做个简单的知识点回顾
.* 0次/全部匹配完
/^(.)*$/ 匹配所有字符【这里括号可以不要,只是为了提示 . 的作用】
方式一 /^([^+-*/].)*$/ [不包含的是单个字符]
方式二 /^(?!(不包含的内容).)*$/ [不包含的是一群字符]
?!(不包含的内容)【其实这里不占位置】
举几个例子
var str ="xxxxxxxxxxxxx+-*///的确不包含+-*/
var reg2 = /^([^+-*/].)*$/;//所以应该返回true
console.log(str.match(reg2))
console.log(reg2.test(str))
方式一
/^([^+-*/].)*$/
划重点: 这句话啥意思?
[^+-*/]
不包含这些字符串中的任何一个,因为[]是元字符,他不接数量词就表示单个字符的意思
[]元字符是指这个集合中的任何一个元素一共会出现一次
[^\+\-\*\/]
^是逻辑非的意思 ,所以合在一起就是这几个元素出现的次数为0次,也就是一次都不会出现,但是需要加上全局匹配的符号,对整个字符进行匹配
/^([^\+\-\*\/].)*$/
单独作用的话效果:得到了出去加减乘除的其他字符
方式二 /^(?!(不包含的内容).)*$/
/^(?![\+\-\*\/].)*$/
不符合条件,字符串包含了 + - * /
所以返回false
删除str里面的运算符之后就能够匹配上了