上一篇
2025年8月快讯:最新发布的jQuery 4.2版本进一步优化了正则表达式处理性能,与现代浏览器引擎的配合度提升了30%!这让老牌技术组合焕发了新生机~ 🎉
伙计们,虽然现在各种前端框架层出不穷,但jQuery+正则这对"老搭档"在处理字符串时依然香得很!🍵 特别是当你需要:
// 举个栗子🌰:检查是否是有效的中国手机号 const isChineseMobile = (str) => { return /^1[3-9]\d{9}$/.test(str); }; $('#mobile-input').blur(function() { if(!isChineseMobile($(this).val())) { alert('手机号格式不对哦~'); } });
先来点干货🍖,记住这几个常用正则模式:
/\d+/
→ 匹配所有数字/[\u4e00-\u9fa5]+/
→ 专抓中文/^\w+@[a-z0-9]+\.[a-z]{2,4}$/i
→ 验证邮箱/\s+/g
→ 消灭所有空白字符// 实战演示:提取字符串中的所有价格 const priceExtractor = (text) => { const prices = text.match(/\d+\.\d{2}/g) || []; return prices.map(p => parseFloat(p)); }; // 使用jQuery绑定事件 $('#extract-btn').click(() => { const results = priceExtractor($('#content').val()); console.log('找到的价格:', results); });
// 验证身份证号(简单版) $.fn.validateIDCard = function() { return /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/.test(this.val()); }; // 使用方式 if(!$('#id-card').validateIDCard()) { $('#hint').text('身份证格式有误!').css('color', 'red'); }
// 过滤危险HTML标签(安全第一🔒) const safeHtml = (html) => { return html.replace(/<script[\s\S]*?>[\s\S]*?<\/script>/gi, '') .replace(/on\w+="[^"]*"/gi, ''); }; // jQuery封装 $.fn.cleanHTML = function() { return this.each(function() { $(this).html(safeHtml($(this).html())); }); }; // 使用示例 $('.user-content').cleanHTML();
// 中英文混合分词 const smartSplit = (text) => { // 匹配中文词语或英文单词 return text.match(/[\u4e00-\u9fa5]+|[a-zA-Z0-9']+/g) || []; }; // 结合jQuery实现动态分词 $('#split-btn').click(() => { const words = smartSplit($('#article').text()); $('#result').html(`共找到 ${words.length} 个词语:<br>${words.join(' | ')}`); });
// 手机号脱敏处理 $.fn.maskMobile = function() { return this.each(function() { const mobile = $(this).text(); $(this).text(mobile.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')); }); }; // 使用示例 - 瞬间给所有手机号打码 $('.mobile-number').maskMobile();
预编译正则:频繁使用的正则应该先创建
// 不好的写法 $('div').filter(function() { return /test/.test($(this).attr('class')); }); // 好的写法 const testRegex = /test/; $('div').filter(function() { return testRegex.test($(this).attr('class')); });
合理使用^和$:明确边界可以提升效率
避免贪婪匹配:尽量用替代
jQuery链式操作:减少DOM查询次数
// 不推荐 $('#content').html(html); $('#content').addClass('processed'); // 推荐 $('#content').html(html).addClass('processed');
// 从杂乱文本中提取时间+地点 const extractMeetingInfo = (text) => { const timeMatch = text.match(/(\d{4}年\d{1,2}月\d{1,2}日)(上午|下午)?(\d{1,2}[::]\d{2})?/); const locationMatch = text.match(/地点[::]\s*([^\n]+)/); return { time: timeMatch ? timeMatch[0] : '未找到', location: locationMatch ? locationMatch[1] : '未指定' }; }; // jQuery绑定 $('#parse-btn').click(() => { const info = extractMeetingInfo($('#notice').text()); $('#output').html(`⏰ 时间:${info.time}<br>📍 地点:${info.location}`); });
// 银行卡号自动加空格(每4位) $('#bank-card').on('input', function() { const val = $(this).val().replace(/\s/g, ''); if(/^\d+$/.test(val)) { $(this).val(val.replace(/(\d{4})(?=\d)/g, '$1 ')); } });
转义字符地狱:
// 错误示范(忘记转义点号) const wrongRegex = /user.name/; // 正确写法 const correctRegex = /user\.name/;
全局标志陷阱:
// 使用带g标志的正则时,test()可能出问题 const regex = /test/g; console.log(regex.test('test')); // true console.log(regex.test('test')); // false!因为lastIndex改变了
jQuery选择器冲突:
// 这不是正则!是jQuery自定义选择器 $('input:regex(id, ^user\\d+$)') // 需要额外插件支持
虽然2025年的前端技术日新月异,但jQuery+正则这对组合在处理字符串任务时依然能打!💪 特别是维护老项目或者需要快速实现功能时,它们就像瑞士军刀一样实用。
记住关键点:
下次遇到字符串处理的难题,不妨试试这个黄金组合吧!有什么问题欢迎留言讨论~ ✨
(注:本文示例基于jQuery 4.2和ECMAScript 2025标准)
本文由 伟棠华 于2025-08-02发表在【云服务器提供商】,文中图片由(伟棠华)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/519371.html
发表评论