我想得到与正则表达式不匹配的任何字符。例如。 “abc123”将返回“123”,[1,2,3]
或类似的东西。
有没有内置的方法来实现这个目标?
$('input').on('keyup', function(){
var valid = /^[a-zA-Z\s*]*$/.test(this.value);
console.log(valid);
});
如果某人有兴趣,可采取另一种解决方案:
var x = this.value.split('').filter(function(v){
return !/[a-zA-Z\s*]+/.test(v);
});
答案 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不匹配时返回字符。