JavaScript 正则怎么用
在做网页的搜索功能时,你可能遇到过这种麻烦:用户输入手机号,不小心多打了个空格;或者填邮箱,随手敲了个“@”符号错位置。要是靠程序员逐行写代码判断,不仅慢,还容易漏。这时候,JavaScript里的正则表达式就能派上大用场,它就像个“智能筛选器”,能快速帮你找出符合规则的文本。
先搞懂:正则是什么?
简单说,正则就是用一串固定的“规则代码”,告诉计算机“什么样的文本是对的”。举个生活化的例子:你去超市找“带包装的纯牛奶”,“带包装+纯牛奶”就是你定的规则,正则就是把这个规则翻译成计算机能懂的语言。

在JavaScript里,有两种常用写法,就像两种打开方式:一种是用两个斜杠包起来,比如/13[0-9]{9}/,适合规则固定不变的情况;另一种是用RegExp对象写,比如new RegExp("13[0-9]{9}"),适合规则需要临时组合的场景。
最常用的3种场景,跟着例子学
验证用户输入(最常用)
网页的登录、注册页都要验证手机号、邮箱,这是正则用得最多的地方。比如判断手机号是否合法:国内手机号开头是13、15、17、18、19,后面跟着9个数字,规则就是“1开头,第二位是3/5/7/8/9,再跟9个数字”。
用JavaScript写代码:
`javascript
// 定义手机号规则:1开头,第二位是3/5/7/8/9,后面9个数字
const phoneReg = /^1[3-9]\d{9}$/;
// 测试用户输入的手机号
const userInput = "13812345678";
console.log(phoneReg.test(userInput)); // 输出true,符合规则
`
这里的test()方法就是用来“查一查是否符合规则”,返回布尔值,符合就是true,不符合就是false。
替换文本(改内容)
有时候需要把网页里的敏感词、多余空格改掉,比如把所有“菜鸟”替换成“***”,或者把用户输入的多余空格删掉。比如替换所有空格:
`javascript
const text = "我 爱 学 JavaScript";
// 把所有空格替换成空字符串
const newText = text.replace(/\s/g, "");
console.log(newText); // 输出"我爱学JavaScript"
`
这里的\s代表空格,g是全局标记(global),意思是“把所有空格都换掉,不是只换第一个”。
提取内容(找特定部分)
如果你想从一串文本里提取所有的数字,比如从“订单号:12345,金额:678元”里把12345和678挑出来,正则也能搞定。用match()方法就能提取:
`javascript
const content = "订单号:12345,金额:678元";
// 匹配所有数字
const numbers = content.match(/\d+/g);
console.log(numbers); // 输出["12345", "678"]
`
这里的\d代表数字,+的意思是“匹配一个或多个连续的数字”,g还是全局标记,把所有数字都找出来。
新手要注意的小细节
第一个是开头结尾的^和$,刚才的手机号规则里有这两个符号,要是没写^和$,比如/1[3-9]\d{9}/,那用户输入“abc13812345678”也会被判断成合法,因为它包含符合规则的部分,而^代表“从开头开始匹配”,$代表“到结尾结束”,这样就能保证整个输入都是符合规则的。
第二个是转义字符,要是想匹配“.”“*”这些特殊符号,得在前面加反斜杠,比如匹配网址里的“.”,要写成\.,不然正则会把它当成“任意字符”。
其实不用怕正则复杂,先从验证手机号、邮箱这些常用的规则练手,慢慢就能掌握它的用法。