插入符号 ^ 和美元符号 $ 在正则表达式中具有特殊含义。它们被称为“锚点”。
插入符号 ^ 匹配文本的开头,而美元符号 $ 匹配结尾。
例如,让我们测试文本是否以 Mary 开头
let str1 = "Mary had a little lamb";
alert( /^Mary/.test(str1) ); // true
模式 ^Mary 表示:“字符串开头,然后是 Mary”。
类似地,我们可以使用 snow$ 测试字符串是否以 snow 结尾
let str1 = "its fleece was white as snow";
alert( /snow$/.test(str1) ); // true
在这些特定情况下,我们可以使用字符串方法 startsWith/endsWith 代替。正则表达式应该用于更复杂的测试。
测试完全匹配
两个锚点一起 ^...$ 通常用于测试字符串是否完全匹配模式。例如,检查用户输入是否处于正确的格式。
让我们检查字符串是否为 12:34 格式的时间。也就是说:两位数字,然后是一个冒号,然后是另外两位数字。
在正则表达式语言中,它是 \d\d:\d\d
let goodInput = "12:34";
let badInput = "12:345";
let regexp = /^\d\d:\d\d$/;
alert( regexp.test(goodInput) ); // true
alert( regexp.test(badInput) ); // false
这里,\d\d:\d\d 的匹配必须从文本的开头 ^ 之后开始,并且结尾 $ 必须紧随其后。
整个字符串必须完全符合此格式。如果有任何偏差或多余字符,结果将为false。
如果存在标志m,锚点的行为会有所不同。我们将在下一篇文章中看到这一点。
锚点具有“零宽度”。
锚点^和$是测试。它们具有零宽度。
换句话说,它们不匹配任何字符,而是强制正则表达式引擎检查条件(文本开头/结尾)。
评论
<code>标签,对于多行代码,请将它们包装在<pre>标签中,对于超过 10 行的代码,请使用沙盒(plnkr,jsbin,codepen…)