javascript - 如何判断字符串中括号都对应了,没有单个出现?
大家讲道理
大家讲道理 2017-04-10 14:36:28
[JavaScript讨论组]

validBraces( "(){}[]" ) => returns true
validBraces( "(}" ) => returns false
validBraces( "[(])" ) => returns false
validBraces( "([{}])" ) => returns true

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
高洛峰

“匹配的括号”是一个上下文无关文法,标准的正则表达式只支持正则文法,不足以描述这个规则(当然有一些扩展的正则表达式引擎支持这一类的功能)
考虑到你的文法没有别的规则,你可以用个简单的办法:

  1. 创建一个栈
  2. 从左到右按字符一次扫描整个字符串,每次遇到各种左括号,将其入栈
  3. 每次遇到各种右括号,检查它是否和栈顶的左括号匹配,如匹配则将栈顶的左括号弹出,如不匹配则报错(括号不匹配),栈为空也报错(右括号多了)
  4. 扫完整个字符串后,栈应该为空,如不为空则报错(左括号多了)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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