正则笔记:括号后面的问号

问题

群里有小伙伴发了一道正则的题目。

正则笔记:括号后面的问号_javascript

解决

解法如下:

^([1-9][0-9]*)+(\.[0-9]{1,2})$ 

正则笔记:括号后面的问号_javascript_02

追问

问题来了,$ 前面要不要加问号呢?

改为如下:

^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 

正则笔记:括号后面的问号_最终用户_03

可以看出这个正则兼容了整数。

从最终用户的角度来讲,加了 问号(?)更加友好。

解决过程的花絮



开始用了 ​​^([1-9]|[0-9]{0,})(.[0-9]{1,2})?$​​ 点(.)没有转义,变成了 Any Char,测试 ​​0w1​​ 也通过了,正则失败。
正则笔记:括号后面的问号_最终用户_04



改为 ​​^([1-9]|[0-9]{0,})(\.[0-9]{1,2})?$​​,看起来是没问题,但是测试 00.11 时通过了,这个正则不对。
正则笔记:括号后面的问号_转义_05



最终改为 ​​^([1-9][0-9]*)+(\.[0-9]{1,2})$​​,再友好点就加上问号 ​​^([1-9][0-9]*)+(\.[0-9]{1,2})?$​正则笔记:括号后面的问号_最终用户_03



 ​