codecamp

Javascript 锚点:字符串开始 ^ 和末尾 $

插入符号 ​^​ 和美元符号 ​$​ 在正则表达式中具有特殊的含义。它们被称为“锚点”。

插入符号 ^ 匹配文本开头,而美元符号 $ 则匹配文本末尾。

举个例子,让我们测试一下文本是否以 Mary 开头:

let str1 = "Mary had a little lamb";
alert( /^Mary/.test(str1) ); // true

该模式 ^Mary 表示:字符串开始,紧接着就是 “Mary”。

与此类似,我们可以用 snow$ 来测试文本是否以 snow 结尾:

let str1 = "it's 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,那么锚点的行为将会不同。我们将在下一篇文章中学习这一点。

锚点“宽度”为零

锚点 ^ 和 $ 属于测试。它们的宽度为零。

换句话说,它们并不匹配一个具体的字符,而是让正则引擎测试所表示的条件(文本开头/文本末尾)。

任务


正则表达式 ^$

什么字符串可以匹配模式 ^$


解决方案

空字符串是唯一的匹配项:它开始并立即结束。

这个题目再次证明了锚点不是字符串,而是测试。

对于空字符串 "",正则表达式引擎将会首先匹配 ^(输入开始),匹配成功,然后立即匹配结束 $,也匹配成功。所空字符串是匹配项。


Javascript Unicode:修饰符 "u" 和类 \p{...}
Javascript 锚点 ^ $ 的多行模式,修饰符 "m"
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

第一部分 JavaScript 编程语言

第三部分 其他文章

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }