使用正则表达式匹配1到31之间的整数,[1-31]不是正确答案!
这样的正则表达式不唯一. [1-9]|12|3[01] 是其中之一
下面的理解了但是上面那个简短的为什么不是答案呢?
使用正则表达式匹配1到31之间的整数,[1-31]不是正确答案!
这样的正则表达式不唯一. [1-9]|12|3[01] 是其中之一
下面的理解了但是上面那个简短的为什么不是答案呢?
首先你要理解正则语法中的[]:
[xyz]
字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[a-z]
字符范围。匹配指定范围内的任意一个字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.
那么[1-31]只能表示一个字符
正则里中括号里短横杠连接的两个字符标示这两个字符之间的字符
具体说明就是
横杠前面的字符转成 utf-8编码
横杠后面的字符转成 utf-8编码
然后转成utf-8编码以后的字符在这两个以内的都能匹配
比如
[0-z]表示所有数字和大写小写字母。。。
[1-31]表示1至3中的一个数字或者1