正则表达式,[\d]能替代[0-9]且代表所有数字吗? [\d^0]能和[0-9^0]等价吗?

如题所述

[\d] 等价于 [0-9]
[\d^0] [0-9^0] 这两个是不正确的,应该使用 [1-9]追问

没有语法或用法上不正确,只是举例有误。
换成5,[\d^5]和 [0-9^5] 等价吗?

追答

[\d^5] 和效果和 [\d\^] 是一样的。因为\d 包含5, [\d^5]是不成立的。^必须放在[之后,如[^5]。就是说,[ ] 只能表示包含或不包含,但不能同时表示包含和不包含。
也就是说,如果 ^ 不跟在 [ 后面的话,只表示匹配 ^ 字符,而不是表示“不包含”匹配规则。

当然,因为从正则看出你的本意是匹配0-9但不匹配5,从这个方面来看,是不对的。但是,
[\d^5]和[0-9^5]都等同于 [\d\^] 或者是[0-9\^] 也就是说,实际上也是相同的。只不过可能不是你想要的结果罢了。

希望对你有所帮助。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-19
/d匹配的是Unicode,所以相当于要筛选各种语言里的数字字符:
比如罗马数字, VI, III, IX 之类也能匹配, 包括拉丁, 中文的数字等都能匹配.

而[0-9]只匹配这是个数字。

所以要是只为了匹配阿拉伯数字, 用[0-9]的效率要高不少.
第2个回答  2011-07-21
Perl 是完全等价的;
PCRE 里不完全是。。。在不同的地方,有被XOR的可能行 (1^0)...

你想匹配什么,除去0以外的数字?? [^0\D]
相似回答