javascript 正则表达式 前瞻
封面图
•
2025-09-25
•
JavaScript
150
0
0
0
在 JavaScript 中,**正则表达式前瞻(Lookahead)** 是一种用于匹配特定模式的机制,但它不会消耗字符串中的字符。也就是说,它只检查当前位置是否符合某种条件,而不会“移动”匹配指针。 JavaScript 支持两种类型的前瞻: --- ## ✅ 1. 正向前瞻(Positive Lookahead):`(?=...)` 语法:`/pattern(?=...)/` - 作用:匹配一个位置,该位置后面必须紧跟 `...` 的内容。 - 不会包含 `...` 的内容到匹配结果中。 ### 示例: ```javascript const str = "apple banana cherry"; // 匹配后面跟着 'a' 的 'b' const regex = /b(?=a)/g; console.log(str.match(regex)); // ["b"] ``` 在这个例子中,`b` 后面是 `a`,所以 `b` 被匹配,但 `a` 不被包括在内。 --- ## ✅ 2. 负向前瞻(Negative Lookahead):`(?!...)` 语法:`/pattern(?!...)/` - 作用:匹配一个位置,该位置后面**不能**紧跟 `...` 的内容。 ### 示例: ```javascript const str = "apple banana cherry"; // 匹配后面不跟 'a' 的 'b' const regex = /b(?!a)/g; console.log(str.match(regex)); // null ``` 因为 `b` 后面是 `a`,所以这个匹配失败。 --- ## 🧠 常见应用场景 ### 1. 匹配以某个词结尾的单词 ```javascript const str = "cat bat hat"; const regex = /\b\w+(?=at\b)/g; console.log(str.match(regex)); // ["cat", "bat", "hat"] ``` 这会匹配所有以 `at` 结尾的单词。 --- ### 2. 验证密码规则(例如:至少有一个数字) ```javascript const password = "Password123"; const regex = /^(?=.*\d).{8,}$/; console.log(regex.test(password)); // true ``` 这里 `(?=.*\d)` 表示:必须包含一个数字。 --- ### 3. 匹配不是以某个词结尾的单词 ```javascript const str = "apple banana cherry"; const regex = /\b\w+(?!\s)/g; console.log(str.match(regex)); // ["apple", "banana", "cherry"] ``` 这个正则会匹配所有不是以空格结尾的单词。 --- ## 📌 注意事项 - 前瞻中的 `...` 可以是任意的正则表达式。 - 前瞻不会改变匹配的位置,因此它们常用于复杂的匹配逻辑中。 - 在 JavaScript 中,前瞻是支持的,但要注意浏览器兼容性(现代浏览器都支持)。 --- ## ✅ 总结 | 类型 | 语法 | 含义 | |--------------|------------------|------------------------------| | 正向前瞻 | `(?=...)` | 匹配后面必须有 `...` | | 负向前瞻 | `(?!...)` | 匹配后面不能有 `...` | --- 如果你有具体的使用场景或问题,我可以帮你写更精确的正则表达式!
上一篇:
javascript 正则表达式 非捕获性分组
下一篇:
javascript 正则表达式 边界
标题录入,一次不能超过6条
返回顶部
留言
留言
评论