单词和字符串边界
不幸的是,getDate
会从字符串"100-1-30000"
中提取出一个无意义的日期——00-1-3000
。正则表达式可以从字符串中的任何位置开始匹配,在我们的例子中,它从第二个字符开始匹配,到倒数第二个字符为止。
如果我们想要强制匹配整个字符串,可以使用^
标记和$
标记。脱字符表示输入字符串起始位置,美元符号表示字符串结束位置。因此/^\d+$/
可以匹配整个由一个或多个数字组成的字符串,/^!/
匹配任何以感叹号开头的字符串,而/x^/
不匹配任何字符串(字符串起始位置之前不可能有字符x
)。
另一方面,如果我们想要确保日期字符串起始结束位置在单词边界上,可以使用\b
标记。所谓单词边界,指的是起始和结束位置都是单词字符(也就是\w
代表的字符集合),而起始位置的前一个字符以及结束位置的后一个字符不是单词字符。
console.log(/cat/.test("concatenate"));
// → true
console.log(/\bcat\b/.test("concatenate"));
// → false
这里需要注意,边界标记并不匹配实际的字符,只在强制正则表达式满足模式中的条件时才进行匹配。