有没有人能够解释下这个正则表达式是什么意思: /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d

问题描述:

有没有人能够解释下这个正则表达式是什么意思: /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/ 先谢谢了
1个回答 分类:数学 2014-09-23

问题解答:

我来补答
/^-?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/
^ #匹配字符串开头
#匹配减号,问号表示减号是可选的,可以没有
\d+ #匹配任意位的数字
| #表示‘或’关系
\d{1,3} #匹配1-3位数字
:,\d{3})+ #匹配一个逗号加一个3位数字,+号表示可以重复多个
:\.\d+)?#匹配一个小数点和多位数字
$ #匹配结尾
综合起来,这个正则表达式用于匹配数字
可以是整数,也可以是小数
12345和12345.6789都可以
可以是负数也可以是正数
-12345和-12345.6789也行
整数部分还可以有逗号做分割符
12,345,678,901.123456也可以匹配
当然
-12,345,678,901.123456也可以
再问: 谢谢你了,那你能不能解释一下 (?: 是什么意思吗? 还有 (?:\.\d+)? 这个地方最后一个问号是修饰它前面那个 ) 还是修饰整个(?:\.\d+)呢?
再答: (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

至于为什么这里要用(?:)
我也不知道,估计他只想匹配这些内容,但不希望捕获吧

?自然是修饰整个括号里的内容啊
 
 
展开全文阅读
剩余:2000
下一页:请说清为什么