试一试
const regex = /fooBar/gi;
console.log(regex.source);
// Expected output: "fooBar"
console.log(new RegExp().source);
// Expected output: "(?:)"
console.log(new RegExp("\n").source === "\\n");
// Expected output: true (starting with ES5)
// Due to escaping
描述
从概念上讲,source 属性是正则表达式字面量中两个斜杠之间的文本。语言要求返回的字符串必须被正确转义,以便当 source 与两侧的斜杠连接时,它将形成一个可解析的正则表达式字面量。例如,对于 new RegExp("/"),source 是 \\/,因为如果它生成 /,则生成的字面量将是 ///,这是一个行注释。同样,所有 行终止符都将被转义,因为行终止符字符会中断正则表达式字面量。对于其他字符没有要求,只要结果是可解析的即可。对于空正则表达式,将返回字符串 (?:)。
示例
使用 source
js
const regex = /fooBar/gi;
console.log(regex.source); // "fooBar", doesn't contain /.../ and "gi".
空正则表达式和转义
js
new RegExp().source; // "(?:)"
new RegExp("\n").source === "\\n"; // true, starting with ES5
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-get-regexp.prototype.source |
浏览器兼容性
加载中…