javascript - 正则表达式 /\B/ 的含义?
迷茫
迷茫 2017-04-10 16:25:25
[JavaScript讨论组]
var text = "this is a former browser!";
console.log(text.match(/\B.s/g)); //["is", "ws"]

上面这个例子,究竟为什么会输出这个结果?\B 的含义究竟是什么?

“\B 匹配非单词边界。”这句话怎么理解?请举例说明,谢谢。

迷茫
迷茫

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

全部回复(3)
伊谢尔伦

首先要理解什么是正则中的“单词”。正则中的单词即可以用 \w 匹配的字符,javascript 中是 [a-zA-Z0-9_],也就是字母、数字和下划线,和变量名允许的字符相同。反之,\W 匹配的字符不是单词,除了空白字符以外,还包括各种标定符号。

然后理解什么是“单词边界”,单词边界 \b 意味着单词 \w 和非单词 \W、字符串首尾、多行模式下的行首行尾的中间位置,例如 "hello world!" 的单词边界包括 "h" 的左边、"o " 的中间、" w" 的中间、"d!" 的中间。

最后,除了单词边界以外的位置就是“非单词边界” \B,包括单词和单词的中间,以及非单词和非单词、字符串首尾、多行模式下的行首行尾的中间。例如 "hello world!" 的非单词边界包括 "he" 的中间、"el" 的中间……"ld" 的中间以及 "!" 的右边。

巴扎黑

例子:

var str = "he is writting css",
    pattn_1 = "/\B.s/g",
    pattn_2 = "/.s/g";
pattn_1.exec(str);    //result:["ss"]
pattn_2.exec(str);    //result:["is"]
这样好看点,你的例子得出的is是this单词的is部分。
黄舟

你可以理解为在你给出的正则表达式中,\B匹配了一个位置,这个位置表示不为单词边界的位置。

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

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