^ # match beginning of the string
(?: # non-capture group
[1-9] # match the leading digit, any digit other than zero
\d{1,2} # match between 1 and 2 digits
,\d{3} # match a comma followed by 3 digits
| # or
[1-9] # match the leading digit, any digit other than zero
\d{0,2} # match between 0 and 2 digits
(?: # begin a non-capture group
,\d{3} # match a comma followed by 3 digits
){2,} # end the non-capture group and executed it >= 2 times
) # end the non-capture group
$ # match the end of the string
4条答案
按热度按时间vsmadaxz1#
您可以使用:用途:
字符串
模式匹配:
^
字符串开头(?:
备选方案的非捕获组\d{2,3}
匹配2-3位数字|
或\d{1,3}
匹配1-3位数字,\d{3}
匹配一个逗号和3个数字)
关闭非捕获组(?:,\d{3})+
重复1+次匹配,
和3位数字参见regex demo。
如果不接受前导零,你可以用
[1-9]
开始匹配,并在下面的量词中说明它:型
另见regex demo
rm5edbpk2#
注意,我们需要匹配10,000到999,999之间的数字,或者匹配1,000,000或更大的数字,并在正确的位置使用逗号。
为了匹配10,000和999,999之间的数字,我们可以使用
字符串
为了匹配100万或更大的数字,
型
因此,我们只需要构造一个由这两个表达式组成的替换。
型
Demo
这个表达式可以分解如下。
型
最后,我们可以分解出前导数字的匹配。
型
ztigrdn83#
假设您的示例
"10,400,000","10,900,000","500,000",
是您正在使用的典型示例,那么看起来您可能有两个选择。"(?:[1-9]\d{0,2}(?:,\d{3}){2,}|[1-9]\d{1,2},\d{3})"
个(?:")([1-9]\d{0,2}(?:,\d{3}){2,}|[1-9]\d{1,2},\d{3})(?:")
个q7solyqu4#
可能,我误解了这个问题。
为什么 “500,000” 是无效的,它有 *"..
试试下面的匹配模式。
字符串