javascript正则边界符^、$、匹配位置而非字符:^/$默认匹配字符串首尾,m模式下扩展为行首尾;匹配w与w交界处的零宽位置,对中文支持有限;为其反向。

JavaScript 正则中的边界匹配符(^、$、)不匹配具体字符,而是匹配“位置”——即字符串中某个特定的逻辑坐标点。理解它们锁定的是“哪里”,而不是“什么”,是正确使用的关键。
^ 和 $:行首与行尾(默认模式下是整个字符串的起止)
^ 匹配输入字符串开头的位置(索引 0),$ 匹配结尾位置(最后一个字符之后)。注意:在默认非多行模式(m 标志未开启)下,它们只针对整个字符串,不是每行。
- 例如:
/^abc$/.test("abc")→ true;但/^abc$/.test("abc ")→ false(因为末尾有换行符,“abc”后面不是字符串结尾) - 开启
m标志后,^和$会扩展为匹配每行的开头和结尾:/^abc$/m.test("xyz abc 123")→ true - 要严格匹配整串且允许末尾有可选换行?可用
/^abc ? ?$/或更稳妥地用/^abc(?: | | )?$/
:单词边界(基于 w 和 W 的交界)
匹配一个**零宽位置**,该位置一边是 w(字母、数字、下划线),另一边是 W(非单词字符)或字符串边界。它不关心字符内容,只看相邻字符类型是否“跨类”。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
/cat/.test("The cat sat")→ true("cat" 前后都是空格/边界,属 W 或边界) -
/cat/.test("category")→ false("cat" 后是 "e",同属w,无边界) -
/50/.test("price: 50$")→ true("50" 后是 "$",属W) - ⚠️ 注意:
对中文、emoji 等 Unicode 字符效果有限,因w默认只匹配 ASCII 字母数字下划线;如需支持中文词边界,需改用(? 类手动构造
补充:B 是 的反向(非单词边界)
B 匹配**不是**单词边界的位置,即两侧同为 w 或同为 W 的地方。
-
/BatB/.test("category")→ true("at" 在 "cat" 和 "egory" 中间,前后都是 w) -
/B50B/.test("a50b")→ true;但/B50B/.test("50$")→ false("50" 后是 "$",类型不同,属于 )
验证位置匹配的小技巧
想确认正则是否真在匹配“位置”?可在替换中插入标记观察:
-
"hello".replace(/^/, "START:") → "START:hello"(^插入开头) -
"word".replace(//g, "|") → "|word|"(单词边界处各加一个|) -
"a1b".replace(/B/g, "_") → "a_1_b"(B出现在连续 w 内部)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










