插入符号 ^
和美元符号 $
在正则表达式中具有特殊含义。它们被称为“锚点”。
插入符号 ^
匹配文本的开头,而美元符号 $
匹配结尾。
例如,让我们测试文本是否以 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…)