扫码关注官方订阅号
这两个正则都是只能匹配‘.’号吧?
认证高级PHP讲师
/\./ 和 /[.]/ 只能匹配`'.'。之前我也很有疑惑,但是没有一个绝对规律的答案。
/\./
/[.]/
\
引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。如.用来匹配点字符,而不是任何字符的通配符。
[ ] [c1-c2] [^c1-c2]
字符组,匹配括号中的任何一个字符,并不是要全部匹配。如/x[zav]e/匹配xze、xae和xve,但是不匹配xxe。如/[0-9]/可以匹配任何数字字符;如/[A-Za-z]/可以匹配任何大小写字母。如正则表达式[^269A-Z] 将匹配除了2、6、9和所有大写字母之外的任何字符。
[^269A-Z]
之前也试过一些符号,对于这两个操作符,特殊符号没有绝对规律,倒是特殊字母匹配符还是有规律的,见下。
'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/但是你用.就不行。
/111[a-c]222/
说白了,像w, d, s这种,其实是一种alias, 简写,都可以用[]来描述:[a-zA-Z0-9], [0-9], [trn ], 虽然代表多个字符,但是只占一个位置。
w
d
s
[a-zA-Z0-9]
[0-9]
[trn ]
[.]当然是没错的,但是你把[]脱了显得更专业。
[.]
[]和.都是锚位置,单独拿出来用是错误的,后面必须接量词*,+,?,{1}, {1,4}, {1,},...才有意义。
*,+,?,{1}, {1,4}, {1,},...
[]可以定制化,[abc]{x}告诉正则引擎这个位置上出现x个a或b或c字符,就认为匹配成功,.不能定制化,.{x}只能告诉正则引擎,这个位置上出现x个任意字符都认为匹配成功。
[]
[abc]{x}
.{x}
两句话总结:
[]和.都是锚位符,不能单独用,必须后面接量词才有意义。
[]可定制化程度更强,.只能代表出现任意字符的位置。
[wW] 匹配任意字符
[wW]
感觉都是匹配 . 字符
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
/\./和/[.]/只能匹配`'.'。之前我也很有疑惑,但是没有一个绝对规律的答案。
引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。如.用来匹配点字符,而不是任何字符的通配符。
字符组,匹配括号中的任何一个字符,并不是要全部匹配。如/x[zav]e/匹配xze、xae和xve,但是不匹配xxe。如/[0-9]/可以匹配任何数字字符;如/[A-Za-z]/可以匹配任何大小写字母。如正则表达式
[^269A-Z]将匹配除了2、6、9和所有大写字母之外的任何字符。之前也试过一些符号,对于这两个操作符,特殊符号没有绝对规律,倒是特殊字母匹配符还是有规律的,见下。
可以试试更多...
js正则
/\./和/[.]/没什么区别!都是表示
.字符本身。字符组([])中的元字符跟字符组之外的元字符的规则是不一样的,许多在字符组外需要转义的字符在字符组中都能直接使用
[],一个位置匹配多中字符。
举例:
匹配前三行,不匹配第四行:
/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个任意字符都认为匹配成功。两句话总结:
[]和.都是锚位符,不能单独用,必须后面接量词才有意义。
[]可定制化程度更强,.只能代表出现任意字符的位置。
[wW]匹配任意字符感觉都是匹配 . 字符