javascript - 为什么我不能在 jQuery 中使用这个正则表达式过滤器选择这个输入字段?

标签 javascript jquery regex

所以我正在使用 padolsey's regex filter尝试选择动态生成的嵌套表单字段。为什么我在下面的选择器代码中一直为 test 获取空值?

jQuery.expr[':'].regex = function(elem, index, match) {
    var matchParams = match[3].split(','),
        validLabels = /^(data|css):/,
        attr = {
            method: matchParams[0].match(validLabels) ? 
                        matchParams[0].split(':')[0] : 'attr',
            property: matchParams.shift().replace(validLabels,'')
        },
        regexFlags = 'ig',
        regex = new RegExp(matchParams.join('').replace(/^s+|s+$/g,''), regexFlags);
    return regex.test(jQuery(elem)[attr.method](attr.property));
}

//selector code
$(document).ready(function() { 
    var test = $('input:regex(id, agreement_activities_attributes_\d*_id)');
    console.log(test);
});

包含我要选择的输入字段的 html 代码

<input id="agreement_activities_attributes_0_id" name="agreement[activities_attributes][0][id]" type="hidden" value="28" />

最佳答案

代码中有错误。

.replace(/^s+|s+$/g,'')

应该是

.replace(/^\s+|\s+$/g,'')

那么它应该可以工作了。

替换会移除所有周围的空格( trim 字符串)。您在选择器 ( :regex(id, agreement_activities_attributes_\d*_id)) 中使用的空格将包含在匹配模式中,因此只会匹配 ID 以空格开头的元素。

关于javascript - 为什么我不能在 jQuery 中使用这个正则表达式过滤器选择这个输入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134606/

相关文章:

javascript - 还有另一个 javascript clearInterval 不工作

javascript - 浏览器关闭时终止 session

javascript - 如何从 JSON 扩展子项,单击父项后加载数据 - D3.Js - 强制定向布局

javascript - Vue.js 表单不是响应式(Reactive)的

javascript - 更新 Spectrum JS Colorpicker Palette 中的新颜色

Jquery 在可排序列表上拖放

javascript - 使用匹配在字符串中查找 ID

regex - 如何仅从此字符串获取链接?

c++ - 提取日期字符串并确定哪个更早

正则表达式从 FQDN 中提取最后 2 个段