从正则表达式获取不匹配的字符

时间:2013-12-12 11:01:37

标签: javascript jquery regex

我想得到与正则表达式不匹配的任何字符。例如。 “abc123”将返回“123”,[1,2,3]或类似的东西。

有没有内置的方法来实现这个目标?

$('input').on('keyup', function(){

    var valid = /^[a-zA-Z\s*]*$/.test(this.value);
    console.log(valid);
});

http://jsfiddle.net/4JrWZ/

如果某人有兴趣,可采取另一种解决方案:

var x = this.value.split('').filter(function(v){
    return !/[a-zA-Z\s*]+/.test(v);
});

2 个答案:

答案 0 :(得分:3)

使用reduce

var result = "abc123def123".split(/[a-zA-Z\s*]+/).reduce(function(prev, curr) {
    return curr ? (prev.push(curr), prev) : prev;
}, []);

如果您想将结果作为字符串

var result = "abc123def123".split(/[a-zA-Z\s*]+/).reduce(function(prev, curr) {
    return curr ? prev + curr : prev;
}, "");

答案 1 :(得分:1)

/[^abc]+/.exec('abc123')

当它们与a,b或c不匹配时返回字符。