如何使用jQuery检测字符串是否包含指定数值?
如何用jQuery检测字符串是否包含指定数值?
其实严格来说,检测字符串包含特定内容不需要依赖jQuery,原生JavaScript的方法就足够好用啦。不过既然你提到了jQuery,我也会结合你的场景给出清晰的示例。
针对你给出的例子:a=13,c=12,b='we have 13 monkeys in the Zoo',要判断a存在于b中为真且c存在于b中为假,可以这样实现:
方法一:使用原生String.includes()(推荐)
这是ES6之后支持的方法,语法简洁直观,可读性拉满:
const a = 13; const c = 12; const b = 'we have 13 monkeys in the Zoo'; // 记得把数值转成字符串再判断,避免类型不匹配的问题 const isAInB = b.includes(a.toString()); const isCInB = b.includes(c.toString()); // 最终的判断条件 const result = isAInB && !isCInB; console.log(result); // 输出 true
方法二:使用原生String.indexOf()(兼容旧浏览器)
如果需要兼容不支持ES6的老旧环境,indexOf()是更稳妥的选择:
const a = 13; const c = 12; const b = 'we have 13 monkeys in the Zoo'; // indexOf返回匹配内容的起始索引,找不到就返回-1 const isAInB = b.indexOf(a.toString()) !== -1; const isCInB = b.indexOf(c.toString()) !== -1; const result = isAInB && !isCInB; console.log(result); // 输出 true
为什么说不需要jQuery?
jQuery的核心能力集中在DOM操作、事件处理、Ajax这些场景,并没有专门为字符串包含检测设计方法。所以用原生JS方法反而更直接高效,没必要多一层依赖。
不过如果你非要贴合jQuery的语法风格(比如链式调用),可以给String原型扩展一个方法(个人不推荐,除非项目有统一规范要求):
$.fn.extend({ includes: function(str) { return this[0].includes(str); } }); // 调用方式(需要把字符串包装成jQuery对象) const $b = $(b); const isAInB = $b.includes(a.toString());
但还是那句话,这种做法纯属画蛇添足,原生方法已经足够好用了。
内容的提问来源于stack exchange,提问作者Igor Tischenko
相关产品推荐
相关产品推荐

