我需要一个匹配以下所有格式的正则表达式:
$ 1.234,56
R$ 1.234,56
1.234,56 $
1.234,56 Kč
kr. 1.234,56
€1.234,56
HK$ 1,234.56
1.234,56 Ft
₹ 1,234.56
₪ 1.234,56
¥ 1,234.56
₩ 1,234.56
RM 1,234.56
$ 1,234.56
kr 1,234.56
₱ 1,234.56
1.234,56 zł
1.234,56 p.
$1,234.56
R 1,234.56
1.234,56 kr
fr. 1.234,56
元 1,234.56
1,234.56 ฿
1,234.56 ₺
£1,234.56
$1,234.56
1.234,56 ₫
$0
$0.00
$ 0,00
$ 0.00
0.00
0,00
1234.00
1234,00
(1,234.00)
$(1,234.00)
($1,234.00)
-$1,234.00
-1234.00
$-1,234.00
234.00 CR
234.00 DR
234.00 WD
234.00 W/D
CR和DR应该可以是大写、混合和小写,如下所示:CR、Cr、cR、cr
WD和W/D应该只能是大写和小写,就像这样:WD,wd,W/D,w/d
它必须排除不符合货币格式的独立数字(即4、45、456、4567等)。如果一个数字不包含货币符号,无论是之前还是之后(参考我提供的格式),它必须包含正确的货币格式,通过十进制和/或逗号分隔(即234.00、234,00、1234.00 1234,00等)。
此外,只要符合正确的格式,任何美元金额都必须能够使用。我提供的例子只是例子。
我已经很接近了,但似乎不能得到它的权利。
以下是我目前掌握的信息:
^(?:[$€£₹¥฿₽₺₴₸₣₱₩₮₡₢₣₲₳₵₪₺﷼]|(?:[A-Z]{2,3}\\s?\\.?\\s?))?\\s?\\d{1,3}(?:[.,]\\d{3})*(?:[.,]\\d{2})?\\s?(?:[$€£₹¥฿₽₺₴₸₣₱₩₮₡₢₣₲₳₵₪₺﷼]|(?:[A-Z]{2,3}\\s?\\.?\\s?))?$
这被用于查找来自世界各地的银行对账单上的交易中的货币金额。
首先感谢所有的正则表达式Maven!
2条答案
按热度按时间6qqygrtg1#
RegEx101
需要大量的嵌套组
((...))
和交替|
才能满足标准并匹配OP列表中的特定字符串。示例
| ####子模式|####说明|
| - -----|- -----|
|
|正则表达式的开始|
|
|行首-匹配1或2个文字
$
和/或-
或文字$
、€
或£
后跟0或1个空格或文字₹
、₪
、¥
、₩
、₱
、R
,或元
后跟空格或文字kr
和0或1.
后跟空格或文字HK$
后跟空格或文字fr.
后跟空格...||
|... then match 1 to 3 digits followed by 0 or more groups of a literal
,
and 3 digits followed by 0 or 1 group of a literal.
and 2 digitsormatch 1 to 3 digits followed by 0 or more groups of a literal.
and 3 digits followed by 0 or 1 group of a literal,
and 2 digits - end of line||
|或|
|
|行首-匹配0或1文字
-
,然后引用第2行第2个单元格...||
|……然后匹配1个空格,后跟文字
Kč
,或Ft
,或zł
,或p.
,或kr
,或C/c
和R/r
,D/d
和R/r
,或W
,后跟0个或更多个/
和1个D
,或w
后跟0或更多/
和1d
,或文字$
,฿
,₺
或₫
-行尾||
|或|
|
|行开始-匹配1或2个文字
$
和/或-
,后跟文字(
或文字(
,后跟文字$
和/或-
或文字$(-
或文字$(-
或文字(
...||
|...然后匹配1到3位数字,后跟0组或更多组文字
,
,3位数字后跟0或1组文字.
,2位数字后跟文字)
-行结束||
|或|
|
|行首-匹配0或1个文字
-
,后跟1到4位数字,后跟0组或多组文字.
或,
和3位数字,后跟文字.
或,
和2位数字-行尾||
|或|
|
|行首-匹配文字
$
和1个空格或文字-$
或文字$-
,后跟1到3位数字-行尾||
|正则表达式结束-
g
全局标志:在第一个match /m
ultiline标志之后继续查找匹配项:^
=行的开始$
=行的结束|qkf9rpyu2#
试试on regex101.com。