Вы можете использовать это регулярное выражение: ^\d+(\.\d{3})*(\,\d+)?$
Данное регулярное выражение соответствует следующему:
10,11
10
1.000.000,11
1.000.000
1.000.000.000.000.000.000.000,00
1.000.000.000.000.000.000.000
И если вам нужно использовать в качестве оператора тысячи запятую ( ,) , тогда вы можете использовать это регулярное выражение: ^\d+(,\d{3})*(\.\d+)?$
Последнее регулярное выражение может соответствовать всем следующим:
10.11
10
1,000,000.11
1,000,000
1,000,000,000,000,000,000,000.00
1,000,000,000,000,000,000,000
Если вам также нужно сопоставить валюты, вы можете используйте следующее регулярное выражение, которое может соответствовать валютам в начале или конце суммы с пробелами или без них:
^([\$€£]*\s*)?\d+(,\d{3})*(\.\d+)?([\s\$€£]*)?$
Имейте в виду, что вам следует обновить список валют, который вы хотите использовать, в скобках. Если, например, вам нужно подтвердить также иену, вам следует обновить скобки с [\$€£]
до [\$€£¥]
как в начале, так и в конце регулярного выражения.
PS: К сожалению, я не могу помочь вам с Часть angular, так как я не являюсь разработчиком angular, но если вы замените строку:
ng-pattern="/^((?=.*[1-9]|0)(?:\d{1,3}))((?=.*\d)(?:\.\d{3})?)*((?=.*\d)(?:\,\d\d){1}?){0,1}$/"
на эту
ng-pattern="/^\d+(\.\d{3})*(\,\d+)?$/"
, она должна выполнить нужную вам работу.