跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

什么是正则表达式以及如何在javascript中应用它?【教程】

正则表达式是JavaScript中处理字符串的基础设施,用于搜索、替换、提取和验证;它是由特殊字符组成的模式,描述字符串结构,需配合match()、replace()、test()等方法使用。 正则表达式 不是“高级技巧”,而是 JavaScript 中处理字符串的基础设施——只要你要做搜索、替换、提取或验证(比如 邮箱 、手机号、URL),它就绕不开。 正则表达式到底是什么? 它是一套用特殊字符组合成的“模式”,用来描述字符串的结构。比如
/d{3}-d{4}/
就表示“三位数字 + 一个短横线 + 四位数字”,能匹配
"123-4567"
,但不匹配
"12-34567"
。 关键点:正则本身不执行操作,它只是“告诉 JS 你想要什么样的字符串”。真正干活的是
String.prototype.match()
、
String.prototype.replace()
、
RegExp.test()
这些方法。 JavaScript 中创建正则的两种方式 字面量写法更常用,也更直观: 立即学习 “ Java免费学习笔记(深入) ”;
/w+@w+.w+/gi
构造函数写法适合动态生成(比如从用户输入拼接):
new RegExp(`\b\w+@\w+\.${domain}\b`, 'gi')
注意:构造函数中反斜杠要双写,因为字符串先解析一次转义;而字面量里只被正则引擎解析一次。 字面量不能拼变量,
/hello ${name}/
是语法错误 全局标志
g
决定是否找全部匹配,不加就只找第一个 忽略大小写用
i
,多行匹配用
m
,粘性匹配用
y
(较少用) 最常踩的坑:test() 方法的 lastIndex 陷阱 带
g
或
y
标志的正则对象是“有状态”的。连续调用
test()
可能返回不同结果: Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载
const r = /a/g;
r.test('ab'); // true
r.test('ab'); // false —— 因为 lastIndex 已移到位置 1,下次从那里开始找
这在循环中验证多个字符串时极易出错。解决办法: 去掉
g
标志(如果只关心“是否匹配”,不需要全局) 每次调用前手动重置:
r.lastIndex = 0
改用
String.prototype.search()
或
RegExp.prototype.exec()
配合循环逻辑 实用场景:提取、替换、校验三件套 提取邮箱:
'Contact me at user@example.com'.match(/w+@w+.w+/g)
// → ['user@example.com']
替换所有连续空白为单个空格:
'a b'.replace(/s+/g, ' ')
// → 'a b'
校验密码强度(至少 8 位,含大小写字母和数字):
/^(?=.*[a-z])(?=.*[A-Z])(?=.*d).{8,}$/.test('Abc12345')
// → true
注意:密码校验别只靠 前端 正则,后端必须重复验证;而且真实项目中建议用专门的密码策略库,而不是硬写复杂正则。 正则写得越长,越容易漏掉边界情况(比如邮箱里允许
+
和
.
,但不能开头或结尾)。与其死磕一个“完美”正则,不如分步校验:先格式,再查域名是否存在,最后看 SMTP 响应。

相关文章