输入边界断言:^、$
**输入边界断言**检查字符串中当前位置是否为输入边界。输入边界是字符串的开头或结尾;或者,如果设置了 m
标志,则为行的开头或结尾。
语法
正则表达式
^
$
描述
示例
删除尾部斜杠
以下示例从 URL 字符串中删除尾部斜杠
js
function removeTrailingSlash(url) {
return url.replace(/\/$/, "");
}
removeTrailingSlash("https://example.com/"); // "https://example.com"
removeTrailingSlash("https://example.com/docs/"); // "https://example.com/docs"
匹配文件扩展名
以下示例通过匹配文件扩展名来检查文件类型,文件扩展名始终位于字符串的末尾
js
function isImage(filename) {
return /\.(?:png|jpe?g|webp|avif|gif)$/i.test(filename);
}
isImage("image.png"); // true
isImage("image.jpg"); // true
isImage("image.pdf"); // false
匹配整个输入
有时您希望确保您的正则表达式匹配整个输入,而不仅仅是输入的子字符串。例如,如果您要确定字符串是否为有效的 标识符,则可以在模式的两端添加输入边界断言
js
function isValidIdentifier(str) {
return /^[$_\p{ID_Start}][$_\p{ID_Continue}]*$/u.test(str);
}
isValidIdentifier("foo"); // true
isValidIdentifier("$1"); // true
isValidIdentifier("1foo"); // false
isValidIdentifier(" foo "); // false
此函数在执行代码生成(使用代码生成代码)时很有用,因为您可以将有效标识符与其他字符串属性(例如 点表示法 而不是 方括号表示法)区分开来
js
const variables = ["foo", "foo:bar", " foo "];
function toAssignment(key) {
if (isValidIdentifier(key)) {
return `globalThis.${key} = undefined;`;
}
// JSON.stringify() escapes quotes and other special characters
return `globalThis[${JSON.stringify(key)}] = undefined;`;
}
const statements = variables.map(toAssignment).join("\n");
console.log(statements);
// globalThis.foo = undefined;
// globalThis["foo:bar"] = undefined;
// globalThis[" foo "] = undefined;
规范
规范 |
---|
ECMAScript 语言规范 # prod-断言 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。