在javascript中查找非单词,非空格和非连字符

时间:2014-12-17 23:09:49

标签: javascript regex

这是一个非常愚蠢的问题,但对于我的生活,我无法在javascript中找到一种简单的方法。

如果一个字符串有" abcdefgh",这应该返回false(没有发现错误)

但是如果一个字符串有一个无效字符,如" @ $$",它应该返回true(找到错误)。

因此,一般规则是如果它包含非单词,非空格和非连字符,则它应返回true以指示错误。

我尝试了(/\W\D\S/).test('hello!'),由于"!"应该返回true(发现问题),但它仍然返回false。

非常感谢!

2 个答案:

答案 0 :(得分:2)

这可能有效/[^\w\s-]/
当line不包含任何单个非单词,空格或连字符时返回true。

答案 1 :(得分:1)

在您当前的正则表达式中,您并不是在寻找任何这些东西 - 您正在寻找连续三个。

此外,\D并不意味着非连字符#34;它表示"不是数字"。

您想要搜索与白名单不匹配的任何内容:

(/[^\w\s\-]/).test('hello!')       // true
(/[^\w\s\-]/).test('hello')        // false
(/[^\w\s\-]/).test('hello-there')  // also false