4 个回答

{开头,然后是任意数量的任意字符,直到字符串末尾。

这里这个的意思是匹配以{(这里是任意字符)结尾的字符串
例如字符串:

  1. fasf{ddd

  2. {

  3. 33{

  4. 123{ 33

...

左花括号开头,直到 字符串结束
\\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次。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题