有没有人能够解释下这个正则表达式是什么意思: /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/ 先谢谢了
1个回答
展开全部
/^-?(?:\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{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,不捕获匹配的文本,也不给此分组分配组号
至于为什么这里要用(?:)
我也不知道,估计他只想匹配这些内容,但不希望捕获吧
?自然是修饰整个括号里的内容啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询