javascript - js正则/\./ 和 /[.]/有什么区别?
PHP中文网
PHP中文网 2017-04-11 13:06:35
[JavaScript讨论组]

这两个正则都是只能匹配‘.’号吧?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(6)
迷茫

/\.//[.]/ 只能匹配`'.'。
之前我也很有疑惑,但是没有一个绝对规律的答案。

\

  引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。如.用来匹配点字符,而不是任何字符的通配符。

    [ ] 
  [c1-c2]
  [^c1-c2]

  字符组,匹配括号中的任何一个字符,并不是要全部匹配。如/x[zav]e/匹配xze、xae和xve,但是不匹配xxe。如/[0-9]/可以匹配任何数字字符;如/[A-Za-z]/可以匹配任何大小写字母。如正则表达式[^269A-Z] 将匹配除了2、6、9和所有大写字母之外的任何字符。

之前也试过一些符号,对于这两个操作符,特殊符号没有绝对规律,倒是特殊字母匹配符还是有规律的,见下。

'love.'.replace(/./, '');  //"ove."  通配
'love.'.replace(/\./, '');  //"love"  点
'love.'.replace(/[.]/, ''); //"love"  点
'love.'.replace(/[\.]/, ''); //"love"  点

但是:
'lo v^se.'.replace(/\^/, ''); //"lo vse."  匹配^
'lo v^se.'.replace(/[^]/, '');  //"o v^se." 匹配开始去了,并没有匹配^
'lo v^se.'.replace(/[\^]/, ''); //"lo vse." 要加一个这样才匹配^


'lo vse.'.replace(/\s/, '');  //"lovse." 匹配空格
'lo vse.'.replace(/[s]/, ''); //"lo ve."  匹配字母
'lo vse.'.replace(/[\s]/, '');  //"lovse."  要加一个\才匹配空格

'    lovte.'.replace(/\t/, '');  //"lovte. 匹配制表符
'    lovte.'.replace(/[t]/, ''); //"    love."  匹配字母
'    lovte.'.replace(/[\t]/, '');  //"lovte."  要加一个\才匹配制表符

可以试试更多...

阿神

js正则/\.//[.]/什么区别!

都是表示 .字符本身。

大家讲道理

字符组([])中的元字符跟字符组之外的元字符的规则是不一样的,许多在字符组外需要转义的字符在字符组中都能直接使用

高洛峰

[],一个位置匹配多中字符。
举例:

111a222
111b222
111c222
111d222

匹配前三行,不匹配第四行:
/111[a-c]222/
但是你用.就不行。

说白了,像w, d, s这种,其实是一种alias, 简写,都可以用[]来描述:
[a-zA-Z0-9], [0-9], [trn ], 虽然代表多个字符,但是只占一个位置。

[.]当然是没错的,但是你把[]脱了显得更专业。

[]和.都是锚位置,单独拿出来用是错误的,后面必须接量词*,+,?,{1}, {1,4}, {1,},...才有意义。

[]可以定制化,[abc]{x}告诉正则引擎这个位置上出现x个a或b或c字符,就认为匹配成功,.不能定制化,.{x}只能告诉正则引擎,这个位置上出现x个任意字符都认为匹配成功。

两句话总结:

  1. []和.都是锚位符,不能单独用,必须后面接量词才有意义。

  2. []可定制化程度更强,.只能代表出现任意字符的位置。

PHP中文网

[wW] 匹配任意字符

天蓬老师

感觉都是匹配 . 字符

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

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