我需要删除与给定的正则表达式不匹配的所有字符。我知道我们可以使用^反转正则表达式。但在我的情况下,正则表达式因每个输入而异。我正在尝试实现通用解决方案。有什么办法,我们可以反转任何动态正则表达式吗?或删除不匹配字符的任何其他选项?
以下代码段提供了一个想法,我想要实现的目标。
$(document).ready(function(){
$('input[check]').on('input',(function(){
//validate the input value with regex and remove none matching charectors
}))
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="string" check='(\d|[a-z])'/>
&#13;
答案 0 :(得分:0)
这是你正在寻找的吗? How to negate the whole regex?
例如,如果您正在寻找:
[abc]{3}
哪个匹配cab
但不匹配dad
,显然你不能只说:
[^abc]{3} # Does not work!
因为那不匹配cab
或dad
。
相反,你可以这样做:
^(?![abc]{3})
示例:https://regex101.com/r/CvvPt0/2表示没有捕获(我的例子) 示例2:https://regex101.com/r/CvvPt0/3也可以捕获3个字符。
请注意,我不知道您希望如何实施它,但如果您与我们分享,我可以稍微修改一下。