/\{[\s\S]*$/
左花括号开头,直到 字符串结束\\s
空白符 \\S
非空白符,
由于如果要匹配多行的时候 .
通配符没办法包含换行符,
所以可以使用 \\s\\S
或是 \\w\\W
这类的方法,
这么做会包含「换行符」,就可以一直匹配到字符串尾端
const text = `
function test() { //start
echo 'testtest';
}
test();
`;
text.match(/\\{.*$/); //这里匹配不到任何内容
text.match(/\\{.*/); //匹配到「{ //start」
这是正则的历史遗留问题
正则在unix系统刚出现的时候,只在一行文本内匹配,默认.匹配n以外的任意ascii字符
以后的正则都继承这一bug
其它的语言内置的正则引擎,例如python,用re.DotAll来表示:.可以匹配n
ES5没有这个设定,所以用互补字符集来弥补,例如:[Ss]、[Ww]、[Dd]……
结合/{[sS]*$/,就是花括号开头,然后任意字符重复0次或者n次。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答835 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
以
{
开头,然后是任意数量的任意字符,直到字符串末尾。