首页 > 正则匹配问题

正则匹配问题

使用正则表达式匹配1到31之间的整数,[1-31]不是正确答案!

这样的正则表达式不唯一. [1-9]|12|3[01] 是其中之一
下面的理解了但是上面那个简短的为什么不是答案呢?


正则里中括号里短横杠连接的两个字符标示这两个字符之间的字符
具体说明就是
横杠前面的字符转成 utf-8编码
横杠后面的字符转成 utf-8编码
然后转成utf-8编码以后的字符在这两个以内的都能匹配
比如
[0-z]表示所有数字和大写小写字母。。。
[1-31]表示1至3中的一个数字或者1


首先你要理解正则语法中的[]:

[xyz]
字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。

[a-z]
字符范围。匹配指定范围内的任意一个字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.

那么[1-31]只能表示一个字符


因为正则表达式就只支持写1-9这种形式,代表的是所有数字,并不是指从1-9的范围,意义是不一样的,不能超过9


因为对于电脑31不是三十一而是三一

【热门文章】
【热门文章】