正则表达式:锚点

摘要:在本教程中,您将学习如何使用正则表达式锚点来匹配字符之前或之后的某个位置。

锚点在正则表达式中具有特殊含义。它们不匹配任何字符。相反,它们匹配字符之前或之后的位置

  •  ^ – 脱字符锚点匹配文本的开头。
  •  $ – 美元符锚点匹配文本的结尾。

请看以下示例

let str = 'JavaScript';
console.log(/^J/.test(str));Code language: JavaScript (javascript)

输出

trueCode language: JavaScript (javascript)

/^J/ 匹配任何以字母 J 开头的文本。它返回 true

以下示例返回 false,因为字符串 JavaScript 不以字母 S 开头

let str = 'JavaScript';
console.log(/^S/.test(str));Code language: JavaScript (javascript)

输出

falseCode language: JavaScript (javascript)

类似地,以下示例返回 true,因为字符串 JavaScript 以字母 t 结尾

let str = 'JavaScript';
console.log(/t$/.test(str));Code language: JavaScript (javascript)

输出

trueCode language: JavaScript (javascript)

您经常需要使用锚点 ^$ 来检查字符串是否完全匹配某个模式。以下示例检查输入字符串是否匹配时间格式 hh:mm,例如 12:05

let isValid = /^\d\d:\d\d$/.test('12:05');
console.log(isValid);Code language: JavaScript (javascript)

输出

trueCode language: JavaScript (javascript)

以下示例返回 false

let valid = /^\d\d:\d\d$/.test('12:105');
console.log(valid);Code language: JavaScript (javascript)

输出

falseCode language: JavaScript (javascript)

锚点 ^ 和 $ 的多行模式:m 标志

锚点 ^$ 的默认值为单行模式。在单行模式下,锚点 ^$ 匹配字符串的开头和结尾。

要启用多行模式,请使用 m 标志。在多行模式下,^$ 锚点匹配字符串的开头或结尾,或者行的开头或结尾。

以下示例仅返回多行字符串的第一个数字

let str = `1st line
2nd line
3rd line`;

let re = /^\d/g;
let matches = str.match(re);

console.log(matches);Code language: JavaScript (javascript)

输出

['1']Code language: JSON / JSON with Comments (json)

如果您添加标志 m,锚点 ^ 也会匹配行开头的数字,如下所示

let str = `1st line
2nd line
3rd line`;

let re = /^\d/gm;
let matches = str.match(re);

console.log(matches);Code language: JavaScript (javascript)

输出

['1', '2', '3']Code language: JSON / JSON with Comments (json)

总结

  • 使用 ^ 锚点匹配文本的开头。
  • 使用 $ 锚点匹配文本的结尾。
  • 使用 m 标志启用多行模式,该模式指示 ^$ 锚点匹配文本的开头和结尾以及行的开头和结尾。
本教程对您有帮助吗?