javascript - jQuery .test 使用正则表达式返回 false

标签 javascript jquery regex

这是一个简单的代码,用于测试输入值是否存在于正则表达式中。主要问题是它总是返回 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/

相关文章:

javascript - knockout 嵌套 foreach 模板未按预期工作

jQuery : get html source of selected text in div

javascript - 在文本中提及用户计数

javascript - ES6 : harmony-proxies: Why does `tracedObj.squared(9)` return undefined?

javascript - 在没有提交按钮的情况下获取下拉列表的选定值

javascript - 将函数传递、接收和使用到子组件中

java - 卡在正则表达式中

c++ - 使用 c++/boost::regex 提取 HTML 文件的特定部分

javascript - 使用纯 JS 和 CSS 动画导航栏折叠

javascript - Angular 用户界面 Bootstrap : promise resolved/rejected when modal closed