RegEx делает проверку поля стоимости - PullRequest
0 голосов
/ 13 июня 2018

Что я могу использовать в переменной regexp, чтобы убедиться, что поле содержит только числа, но также допускает точку остановки (точку) и различные денежные символы (£, $)

Надеюсь, вы поможете!

Спасибо

Вот что у меня есть:

var validRegExp = /^[0-9]$/;

1 Ответ

0 голосов
/ 13 июня 2018

Я бы, вероятно, согласился со следующим:

/^\d+(\.[\d]+){0,1}[€$]{0,1}$/gm

Это соответствует хотя бы одной цифре, затем позволяет вам поставить ноль или один период где-то там, а затем нужно хотя бы одну цифру после периода.В конце этого вы можете поставить один из символов валюты с явным именем.Вы должны добавить все те, которые хотите поддерживать.

Давайте попробуем это для следующего списка:

3.50€
2$
.5
34.4.5
2$€

afasf

Вы увидите, что только первые два сопоставлены правильно.Ваш окончательный результат - те, что в группе 0.

const regex = /^\d+(\.[\d]+){0,1}[€$]{0,1}$/gm;
const str = `3.50€
2\$
.5
34.4.5
2\$€

afasf
`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}
...