javascript - js中如何判断一个字符是不是被转义的
高洛峰
高洛峰 2017-04-10 14:25:11
[JavaScript讨论组]

给定一个字符串,其中包含若干个",如:

var str = 'a"b\"b"a';

通过charAt可以得知,1,3,5位置上的字符都是"

console.log(str.charAt(1) === '"'); // true
console.log(str.charAt(3) === '"'); // true
console.log(str.charAt(5) === '"'); // true

现在有什么方法能都得知,第2个"是被转义的,与另两个"是有差别的?

问题背景,在对一个字符串做词法解析时,需要逐个遍历字符找出正确的"匹配,希望忽略掉被转义的"

希望能够试用于若干个"的情况,如:

var str = 'a"b\"b\"b"a';

请高人指点,感谢。

补一个使用场景的case:

有一段数据,比如:

var data = { "key": { "a'b" : "foo" } }; 

然后view中有个模板,如下,运行正常。

{{key["a'b"]}}

上面的模板是没问题的,但因为模板的是给别人写的,有的人写成下面这样,解析失败了。

{{key['a\'b']}}

从书写模板的层面来看,使用者没有犯错,所以希望在模板引擎内部编译时,能找个方法正确忽略掉转义的引号。这里要得到的确实是a'b的值(foo),而不是a\'b的值(undefined)。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
大家讲道理
var str = 'a"b\"b"a';

写起来虽然不一样,但解释过后,这些引号在内存里都是一样的,无法区分。所以楼主的测试数据不能这么写。
要写成

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

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