javascript - js这个正则啥意思
迷茫
迷茫 2017-04-11 11:41:39
[JavaScript讨论组]

/\{[\s\S]*$/

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
PHP中文网

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

伊谢尔伦

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

  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次。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号