Регулярные выражения сопоставляют все нецифровые символы, кроме десятичной или запятой в определенной позиции - PullRequest
0 голосов
/ 05 декабря 2018

Вот мои номера:

$1,000,000.00
100000000.00
100000
$1,000.00
2.000,00
10000,00

Я хотел бы получить:

1000000.00
100000000.00
100000
1000.00
2000,00
10000,00

Вот мое регулярное выражение:

[^\d(,.{3})]

Я хотел бы получитьудалите все нецифровые символы, кроме десятичной или запятой, если она находится в 3-й позиции справа.Это возможно?

1 Ответ

0 голосов
/ 05 декабря 2018

Наборы символов (или наборы отрицательных символов) должны только содержать те символы, которые вы хотите сопоставить, или те, которые вы не хотите сопоставлять - если вы хотите выполнить дополнительные тесты (такие какрассматриваемый символ не находится в конце строки), выполните эти тесты вне набора символов.

Здесь вы можете использовать отрицательный набор символов

[^\d\n,.]

для сопоставления символов, которые не являются цифрами, символами новой строки, запятыми или точками, и чередуйте этот набор символов с

[,.](?!\d{2}$)

, который будет соответствовать точкам и запятым, за которыми не следуют две цифры и конецлинии.В полном объеме:

[^\d\n,.]|[,.](?!\d{2}$)

и замените на пустую строку.Выход:

1000000.00
100000000.00
100000
1000.00
2000,00
10000,00

https://regex101.com/r/y0s1Bw/1

...