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

Get non-matching characters from regex

本文关键字:字符 不匹配 获取 正则表达式      更新时间:2024-07-03

我想得到与正则表达式不匹配的任何字符。例如,"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);
});

使用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;
}, "");
/[^abc]+/.exec('abc123')

当字符与a、b或c不匹配时,返回这些字符。