单词和字符串边界

不幸的是,getDate会从字符串"100-1-30000"中提取出一个无意义的日期——00-1-3000。正则表达式可以从字符串中的任何位置开始匹配,在我们的例子中,它从第二个字符开始匹配,到倒数第二个字符为止。

如果我们想要强制匹配整个字符串,可以使用^标记和$标记。脱字符表示输入字符串起始位置,美元符号表示字符串结束位置。因此/^\d+$/可以匹配整个由一个或多个数字组成的字符串,/^!/匹配任何以感叹号开头的字符串,而/x^/不匹配任何字符串(字符串起始位置之前不可能有字符x)。

另一方面,如果我们想要确保日期字符串起始结束位置在单词边界上,可以使用\b标记。所谓单词边界,指的是起始和结束位置都是单词字符(也就是\w代表的字符集合),而起始位置的前一个字符以及结束位置的后一个字符不是单词字符。

  1. console.log(/cat/.test("concatenate"));
  2. // → true
  3. console.log(/\bcat\b/.test("concatenate"));
  4. // → false

这里需要注意,边界标记并不匹配实际的字符,只在强制正则表达式满足模式中的条件时才进行匹配。