这是一个简单的代码,用于测试输入值是否存在于正则表达式中。主要问题是它总是返回 false,尽管输入的值应该使用正则表达式返回 true。
HTML
<input id="user" type="text" />
jQuery
$("#user").on("input propertychange",function(){
var user = $(this).val();
var pattern = /[^a-zA-Z 0-9 . -]/g;
var clean_user = user.replace(/[^a-zA-Z 0-9 . -]+/g, '');
// Filter text box
$("#user").val(clean_user);
var fresh_user_value = $("#user").val(clean_user);
if(pattern.test(fresh_user_value) == true){
alert("Working!");
}
});
最佳答案
您可以像这样应用替换:
$(this).val(function(_, value) {
return value.replace(/[^a-zA-Z 0-9 . -]+/g, '');
});
由于您使用相同的表达式来测试和替换,因此从字符串中删除匹配字符后,它将通过测试是合乎逻辑的。
关于javascript - jQuery .test 使用正则表达式返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24667087/